gpt4 book ai didi

java - 编译期间在maven中执行批处理文件

转载 作者:太空宇宙 更新时间:2023-11-04 07:04:27 28 4
gpt4 key购买 nike

我正在使用 exec-maven-plugin 通过 maven 执行批处理文件。我在打包阶段运行了它,但我需要它更早运行。编译阶段就可以了。

批处理脚本生成一个包含 svn 版本的属性文件。当阶段设置为打包时,看起来是在创建 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 项目页面上的邮件列表存档链接已过期。

最佳答案

问题不在于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>

此外,您几乎可以在任何阶段运行任何插件的任何目标或完全禁用其执行。在这里,我禁用了 maven-deploy-plugindefault-deploy 并将自定义目标 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>

有一个特殊的 mvn help: effective-pom 命令,它可以让您了解 mavenized 项目的最终配置是什么。

关于java - 编译期间在maven中执行批处理文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21618202/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com