【问题标题】:How to build war before tests using maven如何在使用 maven 进行测试之前构建战争
【发布时间】:2016-10-16 19:01:46
【问题描述】:

我想构建 WAR,然后在该 WAR 上运行 JUnit 测试。这可能吗?

我的 pom 中有关注者。为了实现,我应该做出哪些改变?

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <version>${maven-war-plugin-version}</version>
    <configuration>
        <webXml>WEB-INF/web.xml</webXml>
        <webResources>
            <resource>
                <directory>${basedir}/src/main/resources</directory>
                <targetPath>WEB-INF/classes</targetPath>
            </resource>
            <resource>
                <directory>${basedir}/src/main/sqls</directory>
                <targetPath>WEB-INF/classes</targetPath>
            </resource>
        </webResources>
        <outputFileNameMapping>@{groupId}@.@{artifactId}@-@{version}@.@{extension}@</outputFileNameMapping>
    </configuration>
</plugin>

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>${maven-surefire-plugin-version}</version>
    <configuration>
        <argLine>-Xms256m -Xmx512m -XX:MaxMetaspaceSize=256m -XX:GCTimeRatio=19
            -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:ParallelGCThreads=4
            -XX:NewRatio=2 ${jvm.args.preferences} ${jvm.args.jacoco}</argLine>
    </configuration>
</plugin>

【问题讨论】:

  • 如果你想对打包的项目进行测试,你应该编写集成测试。
  • 使用 maven-failsafe-plugin 而不是 maven-surefire 因为你正在做的是集成测试而不是单元测试。除此之外,我建议将集成测试放入单独的模块中。然后您的集成测试将在打包后运行(使用mvn clean verify)。

标签: maven maven-2 maven-3 maven-plugin


【解决方案1】:

我认为您无需更改 pom.xml 中的任何内容。

有 4 种方式使用 WAR 插件:

  1. 使用项目包类型为war的包阶段
  2. war:war 目标的调用
  3. war:exploded 目标的调用
  4. war:inplace 目标的调用

mvn compile war:war

mvn package -DskipTests -DskipITs

见:Apache Maven WAR Plugin

【讨论】:

    猜你喜欢
    • 2017-04-27
    • 2014-06-21
    • 1970-01-01
    • 1970-01-01
    • 2012-12-12
    • 1970-01-01
    • 2015-02-20
    • 1970-01-01
    • 2011-03-29
    相关资源
    最近更新 更多