Maven: Excluding tests from build

2019-04-10 10:39发布

I have some classes I'm using as tests in my src/test/java folder of my project. When I run maven using the standard maven compile plugin. Those items are compiled into .class files and are included in the jar where the compiled code is packaged.

I've created these tests for myself to run within eclipse, prior to running maven and building my release. They are just sanity tests and should not be included in the build. I'd rather not put them in a seperate project, because, to me, they make sense here. How can I tell maven that I do not want it to compile/include the files in that directory?

I beleive the maven compiler plugin is generating the jar as follows:

<plugin>
 <artifactId>maven-compiler-plugin</artifactId>
 <configuration>
  <source>1.6</source>
  <target>1.6</target>
 </configuration>
</plugin>

4条回答
We Are One
2楼-- · 2019-04-10 11:15

Annotation for junit @Ignore will ignore the class while building in maven.

Edit:

You can configure maven-surefire-plugin.

<project>
<build>
<project>
<build>
<plugins>
  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.4.2</version>
    <configuration>
      <excludes>
        <exclude>**/TestCircle.java</exclude>
        <exclude>**/TestSquare.java</exclude>
      </excludes>
    </configuration>
  </plugin>
</plugins>
查看更多
祖国的老花朵
3楼-- · 2019-04-10 11:19

Use the option of -Dmaven.test.skip will skip both compilation and execution of the tests. ( use -DskipTests just skips the test execution, the tests are still compiled)

The reference link

mvn clean install -Dmaven.test.skip

查看更多
啃猪蹄的小仙女
4楼-- · 2019-04-10 11:29

Put your custom test files in a folder src/localtest/java i think, maven will not know it is there.

查看更多
倾城 Initia
5楼-- · 2019-04-10 11:31

I understand from your comment on this answer that the "tests" aren't unit tests, but just ordinary classes that you want excluded from the final artifact? As such, your best option is to make use of the <exclude> tag with the maven-jar-plugin as follows:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <version>2.4</version>
    <configuration>
        <excludes>
            <exclude>**/yoursortoftestpackage/YourSortOfTestClass*</exclude>
        </excludes>
    </configuration>
</plugin>

Hope that helps!

Cheers,

查看更多
登录 后发表回答