gpt4 book ai didi

java - 在没有继承的情况下执行 Maven3 exec 插件

转载 作者:搜寻专家 更新时间:2023-11-01 00:51:02 26 4
gpt4 key购买 nike

我有一个多模块 maven java 项目,我想在其中执行 exec 插件,以便在创建 Jar 后执行自定义命令。

我在父 POM 上调用 ma​​ven package assembly:assembly exec:exec 来创建项目输出。

我在父 POM 中使用了以下内容:

    <plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<configuration>
<executable>myExecutable.exe</executable>
<workingDirectory>${basedir}</workingDirectory>
<arguments>....</arguments>
</configuration>
</plugin>

这样做时,我的可执行文件得到了正确执行,但也为每个子模块执行了。

为了尝试修复它,我将插件设置为不继承到子模块:

<inherited>false</inherited>

但现在 exec 插件失败并出现The parameters 'executable' for goal org.codehaus.mojo:exec-maven-plugin:1.2.1:exec are missing or invalid 错误。 p>

我已经尝试将插件设置为在“executions”元素下运行,并将其分配给 Maven 生命周期阶段。这导致可执行文件成功运行,但我无法执行此操作,因为在执行此 exec 插件之前我需要执行其他插件(程序集插件)。

在打包阶段完成并且其他插件(程序集)也已完成后,我如何才能运行此(exec)插件一次?

换句话说,我想为我的所有子模块执行“package”,然后从父模块执行一次 exec 插件。

我将不胜感激。

最佳答案

当您在父 POM 级别运行命令时,您是在告诉 Maven 为每个模块调用生命周期的那一部分

如果您只想为子模块调用 exec:exec,您应该只为子模块声明该插件(因为它对继承父模块的其他模块没有意义)并使用 调用 Maven- -projects-pl 参数:

mvn -pl 子包 assembly:assembly exec:exec

此命令从父项目执行时,仅为子项目执行package assembly:assembly exec:exec

但是,如果您真正想要完成的是您可以在单个命令中打包所有模块,并且您需要程序集: assemblyexec:exec 目标在 package 阶段为该子模块执行,然后是 you want to bind these plugins to that phase .例如:

<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<configuration>
<executable>myExecutable.exe</executable>
<workingDirectory>${basedir}</workingDirectory>
<arguments>....</arguments>
</configuration>
<executions>
<!-- run the exec goal of this plugin every time this module is packaged -->
<execution>
<phase>package</phase>
<goals><goal>exec</goal></goals>
</execution>
</executions>
</plugin>

关于java - 在没有继承的情况下执行 Maven3 exec 插件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16920062/

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