对上一个问题的跟进: Maven run class before test phase: exec-maven-plugin exec:java not executing class
我在jenkins盒子上运行jUnit4测试,用maven构建。我需要在构建的测试阶段之前运行特定的main方法java程序。目的是在测试运行之前恢复测试数据库。
如果我运行了这个exec分配的确切阶段,我的类按预期执行;但是当我运行整个构建时,我的类不会执行:
具体来说,它运行:
mvn -X exec:java generate-test-resources
但不会与:>
mvn -X -e install
- 或 -
mvn -X -e clean install
pom.xml:我的pom.xml文件包含:
<pluginManagement>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.3</version>
<executions>
<execution>
<id>build-test-environment</id>
<phase>generate-test-resources</phase>
<goals>
<goal>java</goal>
</goals>
</execution>
</executions>
<configuration>
<mainClass>main.java._tools.BuildTestEnvironment</mainClass>
</configuration>
</plugin>
</plugins>
</pluginManagement>
生命周期默认值: 我还没有看到maven的生命周期。日志将其报告为:
[DEBUG] Lifecycle default -> [
validate,
initialize,
generate-sources,
process-sources,
generate-resources,
process-resources,
compile,
process-classes,
generate-test-sources,
process-test-sources,
generate-test-resources,
process-test-resources,
test-compile,
process-test-classes,
test,
prepare-package,
package,
pre-integration-test,
integration-test,
post-integration-test,
verify,
install,
deploy
]
答案 0 :(得分:6)
在<pluginManagement>
下定义了你的插件,你实际上是在告诉maven当你调用插件时,你将在整个项目中使用哪个版本的插件。我通常希望<pluginManagement>
标签出现在父pom中。
要调用插件,只需输入<plugins/>
元素即可。它可能会也可能不会继承自
因此,要使用该插件,您只需要通过添加
来调用插件<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.3</version>
<executions>
<execution>
<id>build-test-environment</id>
<phase>generate-test-resources</phase>
<goals>
<goal>java</goal>
</goals>
</execution>
</executions>
<configuration>
<mainClass>main.java._tools.BuildTestEnvironment</mainClass>
</configuration>
</plugin>
...AnyOtherPlugin
<plugins>
没有任何<pluginManagement>
标记
答案 1 :(得分:2)
Ashish接受了它:<pluginManagement>
正在杀死它。
我认为我需要<pluginManagement>
,因为Eclipse和m2e存在问题。原来m2e的人有一个解决方案(一个非常复杂的解决方案)。
请参阅:
How to solve "Plugin execution not covered by lifecycle configuration" for Spring Data Maven Builds
- 和 -
http://wiki.eclipse.org/M2E_plugin_execution_not_covered
祝你好运,如果你遇到这个!