Maven skip tests

后端 未结 8 2109
攒了一身酷
攒了一身酷 2020-12-12 09:10

I am using Maven 2.2.1 and to build my project I used this command

mvn clean install -Dmaven.test.skip=true

However, the build failed sayin

相关标签:
8条回答
  • 2020-12-12 09:42

    As you noted, -Dmaven.test.skip=true skips compiling the tests. More to the point, it skips building the test artifacts. A common practice for large projects is to have testing utilities and base classes shared among modules in the same project.

    This is accomplished by having a module require a test-jar of a previously built module:

    <dependency>
      <groupId>org.myproject.mygroup</groupId>
      <artifactId>common</artifactId>
      <version>1.0</version>
      <type>test-jar</type>
      <scope>test</scope>
    </dependency>
    

    If -Dmaven.test.skip=true (or simply -Dmaven.test.skip) is specified, the test-jars aren't built, and any module that relies on them will fail its build.

    In contrast, when you use -DskipTests, Maven does not run the tests, but it does compile them and build the test-jar, making it available for the subsequent modules.

    0 讨论(0)
  • 2020-12-12 09:46

    During maven compilation you can skip test execution by adding following plugin in pom.xml

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.20.1</version>
        <configuration>
             <skipTests>true</skipTests>
        </configuration>
    </plugin>
    
    0 讨论(0)
  • 2020-12-12 10:01

    There is a difference between each parameter.

    • The -DskipTests skip running tests phase, it means at the end of this process you will have your tests compiled.

    • The -Dmaven.test.skip=true skip compiling and running tests phase.

    As the parameter -Dmaven.test.skip=true skip compiling you don't have the tests artifact.

    For more information just read the surfire documentation: http://maven.apache.org/plugins-archives/maven-surefire-plugin-2.12.4/examples/skipping-test.html

    0 讨论(0)
  • 2020-12-12 10:04

    I have another approach for Intellij users, and it is working very fine for me:

    1. Click on the "Skip Test" button

    1. Hold the "CTRL" button
    2. Select "clean" and "install"

    1. Click on the "Run" button in the maven pannel

    0 讨论(0)
  • 2020-12-12 10:07

    I can give you an example which results with the same problem, but it may not give you an answer to your question. (Additionally, in this example, I'm using my Maven 3 knowledge, which may not apply for Maven 2.)

    In a multi-module maven project (contains modules A and B, where B depends on A), you can add also a test dependency on A from B.

    This dependency may look as follows:

    <dependency>
         <groupId>com.foo</groupId>
         <artifactId>A</artifactId>
         <type>test-jar</type> <!-- I'm not sure if there is such a thing in Maven 2, but there is definitely a way to achieve such dependency in Maven 2. -->
         <scope>test</scope>
    </dependency>
    

    (for more information refer to https://maven.apache.org/guides/mini/guide-attached-tests.html)
    Note that the project A produces secondary artifact with a classifier tests where the test classes and test resources are located.

    If you build your project with -Dmaven.test.skip=true, you will get a dependency resolution error as long as the test artifact wasn't found in your local repo or external repositories. The reason is that the tests classes were neither compiled nor the tests artifact was produced.
    However, if you run your build with -DskipTests your tests artifact will be produced (though the tests won't run) and the dependency will be resolved.

    0 讨论(0)
  • 2020-12-12 10:08

    To skip the test case during maven clean install i used -DskipTests paramater in following command

    mvn clean install -DskipTests
    

    into terminal window

    0 讨论(0)
提交回复
热议问题