如果不编写 Maven 插件,就无法创建自定义生命周期。
如果不破解 Maven 本身,至少从 Maven 3.0.5 开始,不可能通过插件向 Maven 添加自定义阶段。在处理任何插件之前,这些阶段由 Maven 的核心从其配置中加载。
如果你真的决定使用一个命令来做你想做的事,那么编写插件是唯一的方法。在您的 中使用一些pluginGroup 映射settings.xml
,这可以变得更简单(您可以指定mvn my:plugin
而不是mvn com.mygroupid:plugin
)。
但是,如果您愿意在命令行上使用稍微冗长的语法,则可以通过配置文件和exec maven 插件来实现您想要的。
将配置文件添加到使用 exec 插件自行运行的模块 B。
像这样的东西:
<project>
...
<profiles>
<!-- This profile uses local webapp security instead of the BlueCoat device, useful for testing -->
<profile>
<id>execb</id>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.2.1</version>
<executions>
<execution>
<id>runb</id>
<goals>
<goal>java</goal>
</goals>
<phase>verify</phase> <!-- Anything after package phase -->
<configuration>
<!-- Exec plugin configuration goes here -->
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>
您需要根据运行 JAR 的方式配置 exec 插件,更多信息请点击此处。
它的作用是将 exec 插件作为模块 B 构建的一部分运行,但execb
前提是激活了配置文件。
现在,当您只想构建您的项目(没有任何执行程序)时,像正常一样构建(例如mvn install
)。
当您要构建和运行时,请使用命令行:
mvn install -Pexecb
它将执行 exec 作为构建的一部分。