我对詹金斯的输出感到有些困惑。
詹金斯的工作:(底部缩短了pom.xml)
sol$value
我的所有插件都会运行4次:
我需要:
为什么:
父pom.xml
mvn deploy -Pprofile1
答案 0 :(得分:1)
首先,如果您在父项中定义一个继承给所有子项的插件,而不是它完全按照您的意愿行事,这意味着它在每个pom上执行(或者每个模块上的其他单词,如果它是孩子与否)。
你的插件的问题是他们处理不太好的用例。因为你说第一个first-maven-plugin
应该只在根级别运行(除此之外我不明白你的意思是清理操作...删除目标文件夹?)
第二个插件second-maven-plugin
应该适用于所有pom?哪个不是很准确因为你的意思是pom所有包装pom
的儿童模块?但我认为你的意思是所有有包装jar
的儿童?
除上述内容外,我不确定您的个人资料的使用是否仅基于缺乏处理用例的正确性。
上面的结果我得出结论,你需要改变你的插件的实现。
如果您希望只在这样的多模块结构的根级别上运行插件,则可以在插件中以非常简单的方式处理:
public void execute()
throws MojoExecutionException, MojoFailureException
{
if (mavenProject.isExecutionRoot()) {
} else {
}
..
通过使用上面的插件,您的插件可以决定它是否在根级别上运行。
因此,您的first-maven-plugin
可以使用以下内容:
public void execute()
throws MojoExecutionException, MojoFailureException
{
if (!mavenProject.isExecutionRoot()) {
getLog().info("Not running at root level");
return;
}
// here the time consuming operations
..
你的second-maven-plugin
做了对话:
public void execute()
throws MojoExecutionException, MojoFailureException
{
if (mavenProject.isExecutionRoot()) {
getLog().info("Not running at root level");
return;
}
// here the operation on the childs.
..
可以通过以下方式改善行为:
public void execute()
throws MojoExecutionException, MojoFailureException
{
if (!mavenProject.isExecutionRoot()) {
getLog().debug("Not running at root level");
return;
}
if ("pom".equals(project.getPackaging())) {
getLog().debug("Ignoring pom packaging.");
return;
}
// ..now the operations you would like to do...
因此,如果您有多个级别的模块层次结构,则可以忽略pom
包装部件或其他部件等。
最后但并非最不重要。你的插件存档了什么?
答案 1 :(得分:0)
您可以在第一个插件配置中使用<inherited>false<inherited>
,为我工作:
<build>
<plugins>
<plugin>
<groupId>com.test.plugin</groupId>
<artifactId>first-maven-plugin</artifactId>
<version>1.0.0-SNAPSHOT</version>
<inherited>false<inherited>
<execution>
<id>execution1</id>
<phase>initialize</phase>
<goals>
<goal>doit</goal>
</goals>
</execution>
</plugin>
<plugin>
<groupId>com.test.plugin2</groupId>
<artifactId>second-maven-plugin</artifactId>
<version>1.0.0-SNAPSHOT</version>
<execution>
<id>another</id>
<phase>package</phase>
<goals>
<goal>goforit</goal>
</goals>
</execution>
</plugin>
</plugins>
</build>