我有一个多模块maven java项目,我想执行exec插件,以便在创建Jars后执行自定义命令.
我调用maven包程序集:程序集exec:exec在父POM上创建项目输出.
我在父POM中使用了以下内容:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<configuration>
<executable>myExecutable.exe</executable>
<workingDirectory>${basedir}</workingDirectory>
<arguments>....</arguments>
</configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)
这样做时,我的可执行文件正确执行,但也为每个子模块执行.
为了尝试修复它,我将插件设置为不继承子模块:
<inherited>false</inherited>
Run Code Online (Sandbox Code Playgroud)
但是现在exec插件失败了,目标org.codehaus.mojo的参数'executable':exec-maven-plugin:1.2.1:exec丢失或无效错误.
我已经尝试将插件设置为在"executions"元素下运行并将其分配给maven生命周期阶段.这导致可执行文件成功运行,但我无法执行此操作,因为我需要在执行此exec插件之前执行其他插件(程序集插件).
如何在包阶段完成后运行此(exec)插件,另一个插件(程序集)也已完成?
换句话说,我想为所有子模块执行'package',然后从父模块执行一次exec插件.
我将不胜感激任何帮助.
当您在父 POM 级别运行命令时,您是在告诉 Maven为每个模块调用生命周期的该部分。
如果您只想为子模块调用 exec:exec,则应该只为子模块声明该插件(因为它对于继承父模块的其他模块没有意义)并使用 或 参数调用--projectsMaven -pl:
mvn -pl 子包 assembly: assembly exec:exec
从父项目执行此命令时,package assembly:assembly exec:exec仅对子项目执行。
但是,如果您真正想要实现的是可以package在单个命令中执行所有模块,并且您希望在该阶段期间为该子模块执行assembly:assembly和目标,那么您希望将这些插件绑定到该阶段。例如:exec:execpackage
<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>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
986 次 |
| 最近记录: |