Maven:从构建中排除测试

时间:2013-02-05 21:57:15

标签: java maven build jar compilation

我在我的项目的src / test / java文件夹中有一些我正在使用的类。当我使用标准的maven编译插件运行maven时。这些项目被编译成.class文件,并包含在打包编译代码的jar中。

我为自己创建了这些测试,以便在运行maven和构建我的版本之前在eclipse中运行。它们只是健全性测试,不应包含在构建中。我宁愿不把它们放在一个单独的项目中,因为对我来说,它们在这里是有道理的。如何告诉maven我不希望它编译/包含该目录中的文件?

我相信maven编译器插件正在生成jar,如下所示:

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

4 个答案:

答案 0 :(得分:6)

我从你的comment on this answer了解到,“测试”不是单元测试,而只是你想从最终工件中排除的普通类?因此,您最好的选择是将<exclude>标记与maven-jar-plugin一起使用,如下所示:

<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>

希望有所帮助!

干杯,

答案 1 :(得分:1)

junit @Ignore的注释将在maven中构建时忽略该类。

编辑:

您可以配置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>

答案 2 :(得分:1)

将自定义测试文件放在src/localtest/java文件夹中,我想,maven不会知道它在那里。

答案 3 :(得分:1)

使用print(freq) <7 * Weeks: weekday=6> print(type(freq)) <class 'pandas.tseries.offsets.Week'> 选项将跳过测试的编译和执行。 (使用-Dmaven.test.skip只是跳过测试执行,测试仍在编译中)

The reference link

-DskipTests