如果激活了某个配置文件(此处为"java8"),我们的maven pom.xml指定添加一个额外的源和测试源文件夹。pom的相应部分如下所示
<profile>
<id>java8</id>
....
<build>
<plugins>
....
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.8</version>
<executions>
<execution>
<id>add-test-source</id>
<phase>generate-test-sources</phase>
<goals><goal>add-test-source</goal></goals>
<configuration>
<sources>
<source>src/test/java8</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>根据http://mojo.codehaus.org/build-helper-maven-plugin/usage.html,这似乎是正确的规范。
运行mvm install -P java8时,我看到额外的测试按预期执行。
但是,运行mvm eclipse:eclipse -P java8时,eclipse .classpath中不会出现附加的测试源文件夹。
问题:如何配置maven以将测试源文件夹添加到eclipse配置中?是上述行为是错误还是错误配置?
发布于 2013-10-31 08:14:08
在对此进行了一些试验之后,我可以部分地回答我自己的问题(希望能节省一些其他开发人员的时间):
如果你用
<phase>generate-sources</phase>
<goals><goal>add-test-source</goal></goals>而不是
<phase>generate-test-sources</phase>
<goals><goal>add-test-source</goal></goals>然后将测试源文件夹添加到eclipse .classpath (并将其作为测试文件夹添加)。也就是说,我现在正在一个不同的阶段执行“附加测试源”。
换句话说,配置文件如下所示:
<profile>
<id>java8</id>
....
<build>
<plugins>
....
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.8</version>
<executions>
<execution>
<id>add-test-source</id>
<phase>generate-sources</phase>
<goals><goal>add-test-source</goal></goals>
<configuration>
<sources>
<source>src/test/java8</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>这看起来像是一个“解决办法”。它仍然与http://mojo.codehaus.org/build-helper-maven-plugin/usage.html的规范相矛盾。
发布于 2015-12-06 12:18:02
您可以使用http://www.eclipse.org/m2e/插件来打开maven pom.xml项目,而不是使用eclipse:eclipse。
一旦在maven中安装了这个插件,就可以利用m2e maven插件,它可以将任何maven阶段映射到eclipse构建生命周期中。在我们的示例中,需要将类似的内容添加到pom.xml中:
<pluginManagement>
<plugins>
<plugin>
<groupId>org.eclipse.m2e</groupId>
<artifactId>lifecycle-mapping</artifactId>
<version>1.0.0</version>
<configuration>
<lifecycleMappingMetadata>
<pluginExecutions>
<pluginExecution>
<pluginExecutionFilter>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<versionRange>[1.0,)</versionRange>
<goals>
<goal>add-test-source</goal>
</goals>
</pluginExecutionFilter>
<action>
<execute>
<runOnIncremental>true</runOnIncremental>
</execute>
</action>
</pluginExecution>
</pluginExecutions>
</lifecycleMappingMetadata>
</configuration>
</plugin>
</plugins>
</pluginManagement> 重要
只有当您安装m2e插件并使用它打开maven项目时,这才能起作用。
发布于 2013-11-02 16:55:30
在我看来,这个插件正在按预期工作。
当您运行mvn install -P java8时,您正在调用阶段install。实际上,maven在install之前执行所有阶段,包括generate-test-sources阶段和test阶段.在它真正执行install之前。因为插件的目标是绑定到generate-test-sources阶段,所以在本例中,您将看到您的测试添加到类路径中并运行。
但是,当您运行mvn eclipse:eclipse -P java8时,您调用的是插件的目标(特别是eclipse插件的eclipse目标),而不是构建生命周期(阶段)。根据eclipse插件的文档,将只调用generate-resources阶段。请注意,generate-resources并不“包括”generate-test-sources (请参阅更多的这里),因此在本例中,您的构建助手插件不会被调用。
如果我猜对了,您将尝试在启用配置文件java8的情况下在Eclipse中运行您的测试。在这种情况下,一种方法是右键单击您的项目,在java8 ->OK中的Active Maven配置文件输入框中单击Maven。现在,右键单击您的项目,并选择Run -> JUnit Test (或任何您正在使用的测试框架)。确保您使用最新的Eclipse版本(开普勒4.3.1到目前为止),因为它有一个内置的m2e插件,它比原来的m2e有了很大的改进。
https://stackoverflow.com/questions/19701295
复制相似问题