我正在努力将插件集成到一个多模块项目中。
我正在使用第三方插件,基本上只需要从父项目运行(基于我对它的理解和使用)。我尝试使用profile来完成此操作,如下所示:
<profiles>
<profile>
<id>run-my-guy</id>
<build>
<plugins>
<plugin>
<groupId>com.myproject</groupId>
<artifactId>myproject-maven-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>runThing</goal>
</goals>
<inherited>false</inherited>
</execution>
</executions>
<inherited>false</inherited>
</plugin>
</plugins>
</build>
</profile>
</profiles>
我有几个<inherited>false</inherited>
,但如果我运行mvn help:all-profiles
,我仍然可以在每个模块中看到此配置文件。如果我运行mvn package -P run-my-guy
,我会看到每个子项目都会执行此操作。我希望能够激活它,我不希望它默认打开。
如果我尝试将其添加到<build>
部分,请执行以下操作:
<build>
<plugins>
<plugin>
<groupId>com.myproject</groupId>
<artifactId>myproject-maven-plugin</artifactId>
<inherited>false</inherited>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>runThing</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
在这里,我还有一些<inherited>false</inherited>
,只是为了尝试强制执行插件和执行不会被继承。但是,当我运行package
阶段或包含该阶段的任何内容时,都会包含runThing
目标。
如何仅通过激活(例如个人资料或其他功能,或仅通过显式运行目标)并仅在父级中运行目标?
答案 0 :(得分:1)
如"Run a single Maven plugin execution?"的答案所示,现在可以(自Maven 3.3.1起)为直接目标调用指定执行ID。
<强>的pom.xml 强>
<build>
<plugins>
<plugin>
<groupId>com.myproject</groupId>
<artifactId>myproject-maven-plugin</artifactId>
<inherited>false</inherited>
<executions>
<id>myproject-exec-id</id> <!-- note the execution Id -->
<execution>
<phase>none</phase>
<goals>
<goal>runThing</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
然后从命令行调用目标使用可选的@executionId
参数:
mvn myproject:runThing@myproject-exec-id