【发布时间】:2013-01-20 23:34:57
【问题描述】:
我在项目的 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>
【问题讨论】:
-
Maven 默认会从您的可部署中排除已编译的测试。请包含您的构建文件的相关部分,以便我们查看您的特定案例的情况。
-
我不得不把它放进去。这没什么特别的,因为我说过它使用了默认的 maven 编译插件。在这种情况下,除了包含 .class 文件的 jar 之外,没有“可部署”。我不希望测试被编译,但它们是,并且没有被排除在外。
-
好吧,测试将总是被编译,但就像我说的,默认情况下它们被排除在外。当您将
-DskipTests=true包含为命令行选项时会发生什么? -
您确定测试包含在打包的 jar 文件中吗?如果您遵守 maven 约定(听起来像是通过将测试类放在 src/test/java 中),那么除非您执行特定的操作来包含它们,否则它们将不会被包含在内。
-
@Perception 否,可以使用 -Dmaven.test.skip=true 忽略测试(因此跳过编译)(参见 maven.apache.org/surefire/maven-surefire-plugin/examples/…)
标签: java maven build jar compilation