这是我的pom文件的摘录。

mvn install


但是,当我尝试将其封装到“ pluginManagement”标签中时,启动.... <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <version>2.4</version> <executions> <execution> <phase>install</phase> <goals> <goal>copy-dependencies</goal> </goals> <configuration> ...... </configuration> </execution> </executions> </plugin> </plugins> ... 目标时maven-dependency-plugin停止工作。 “ pluginManagement”标签更改构建行为?还是应该使用其他目标或选择?

#1 楼

您仍然需要在构建中添加

 <plugins>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-dependency-plugin</artifactId>
    </plugin>
</plugins>
 


,因为pluginManagement只是一种方法在所有项目模块中共享相同的插件配置。

从Maven文档:


pluginManagement:是在侧面插件中可以看到的元素。插件管理包含插件元素的方式几乎相同,除了它不是为该特定项目构建配置插件信息,而是要配置从此继承的项目构建。但是,这仅配置在子级的plugins元素内实际引用的插件。子级有权覆盖pluginManagement定义。


#2 楼

<pluginManagement/><plugins/>之间的区别在于:<plugin/>位于以下位置:这对于拥有父pom文件的情况非常有用。
<pluginManagement/>是插件的实际调用。它可以从<plugins/>继承,也可以不继承。如果不是父POM,则项目中不需要<pluginManagement/>。但是,如果它是父pom,则在子pom中,您需要有一个类似以下的声明:您可以从父级继承它,除非您需要根据子项目的需要进一步调整调用。

有关更多特定信息,您可以检查:


Maven pom.xml参考:插件
Maven pom.xml参考:插件管理


评论


谢谢您的回复。我需要在同一pom文件中混合使用pluginManagement和plugin标签(用于maven-dependency-plugin),因为我需要绕过M2E Eclipse IDE插件的一个小错误。参见stackoverflow.com/questions/8706017/…

– Andrea Borgogelli Avveduti
2012年5月7日15:08



谢谢! :) 相同。您可以在部分中定义依赖项(以及它们的版本和范围),然后在部分中定义groupId和artifactId。

– carlspring
2012年9月28日16:30

如果我必须执行两次插件,我应该使用插件管理吗?

– Kalpesh Soni
2014年6月4日21:02

@KalpeshSoni:这取决于-您可能希望在两个执行之间具有通用的配置,而不必重新定义。

– carlspring
16年6月23日在11:22

#3 楼

您可以在pluginManagement中使用parent pom进行配置,以防任何child pom要使用它,但并非每个子插件都希望使用它。例如,您的super pom为maven Javadoc插件定义了一些选项。

并非每个child pom都可能希望使用Javadoc,因此您可以在pluginManagement部分中定义这些默认值。想要使用Javadoc插件的子pom,仅定义一个插件部分,并将继承pluginManagementparent pom定义的配置。

评论


谢谢。我只是想在同一pom文件中混合使用pluginManagement和plugin标签,因为我需要绕过Eclipse的M2E插件的一个小错误。请参阅stackoverflow.com/questions/8706017/…

– Andrea Borgogelli Avveduti
2012年5月7日15:13

#4 楼


pluginManagement:是在侧面插件中可以看到的元素。插件管理包含插件元素的方式几乎相同,除了它不是为该特定项目构建配置插件信息,而是要配置从此继承的项目构建。但是,这仅配置在子级的plugins元素内实际引用的插件。子级有权覆盖pluginManagement定义。


从http://maven.apache.org/pom.html#Plugin%5FManagement

复制自:

Maven2-pluginManagement和父子关系的问题

#5 楼

因此,如果我了解得很好,我会说<pluginManagement>就像<dependencyManagement>都只用于共享父级模块及其子模块之间的配置。为此,我们在父级项目中定义了依赖项和插件的通用配置,并且那么我们只需要在子模块中声明依赖项/插件即可使用它,而不必为其定义配置(即版本或执行,目标等)。尽管这不会阻止我们覆盖子模块中的配置。
相反,<dependencies><plugins>与其配置一起继承,因此不应在子模块中重新声明,否则会发生冲突。
是吗?