我正在使用exec-maven-plugin用maven执行批处理文件。我在包装阶段运行它,但我需要它早点运行。编译阶段没问题。
批处理脚本生成包含svn版本的属性文件。当阶段设置为package时,看起来之后它是否生成war文件。对我来说太迟了。
然而,在eclipse中我得到了这个错误:
Plugin execution not covered by lifecycle configuration: org.codehaus.mojo:exec-maven-plugin:1.2.1:exec (execution: Version, phase: compile)
我的pom.xml的相关部分:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.2.1</version>
<executions>
<execution>
<id>Version</id>
<phase>compile</phase>
<goals>
<goal>exec</goal>
</goals>
</execution>
</executions>
<configuration>
<executable>\my\path\version\version.bat</executable>
</configuration>
</plugin>
首先,exec-maven-plugin仍然是正确的工具吗?
第二,它可以在比包更早的阶段运行吗?这记录在哪里? exec-maven-plugin项目页面上的邮件列表归档链接已过期。
答案 0 :(得分:1)
问题不在于exec-maven-plugin
,而在于m2e
插件,它不知道如何处理exec-maven-plugin
。解决问题的最简单方法是在Eclipse 中构建期间忽略该插件(右键单击问题并使用建议的解决方案)。命令行调用仍将运行批处理。
如果您希望m2e
可以更复杂地配置。看看我的一个项目的片段:
<pluginManagement>
<plugins>
...
<!-- The following plugin is solely to make Eclipse happy, it's not executed during regular build -->
<plugin>
<groupId>org.eclipse.m2e</groupId>
<artifactId>lifecycle-mapping</artifactId>
<version>1.0.0</version>
<configuration>
<lifecycleMappingMetadata>
<pluginExecutions>
<pluginExecution>
<pluginExecutionFilter>
<groupId>com.googlecode.cmake-maven-project</groupId>
<artifactId>cmake-maven-plugin</artifactId>
<versionRange>[2.8.11-b4-SNAPSHOT,)</versionRange>
<goals>
<goal>generate</goal>
<goal>compile</goal>
</goals>
</pluginExecutionFilter>
<action>
<execute />
</action>
</pluginExecution>
</pluginExecutions>
</lifecycleMappingMetadata>
</configuration>
</plugin>
</plugins>
</pluginManagement>
此外,您可以在任何阶段运行任何插件的几乎任何目标,或者完全禁用其执行。在此,我停用了default-deploy
的{{1}},并为maven-deploy-plugin
阶段分配了自定义目标deploy-file
:
deploy
有一个特殊的 <plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.5</version>
<executions>
<execution>
<id>default-deploy</id>
<phase>none</phase>
</execution>
<execution>
<id>versioned-deploy</id>
<goals>
<goal>deploy-file</goal>
</goals>
<phase>deploy</phase>
<configuration>
<file>${project.build.directory}/${project.build.finalName}.${project.packaging}</file>
<repositoryId>${project.distributionManagement.repository.id}</repositoryId>
<url>${project.distributionManagement.repository.url}</url>
<generatePom>false</generatePom>
<pomFile>${effective_dir}/pom.xml</pomFile>
</configuration>
</execution>
</executions>
</plugin>
命令,可以让你了解一个mavenized项目的最终配置。