为什么<dependencies>
for a<plugin>
只能在该<build>
部分中定义,而不是 的<reporting>
部分pom
?
- 为什么 Maven
pom.xml
语法不允许<dependencies>
in<reporting>
?- 如果用户只想配置插件
<reporting>
并设置依赖版本怎么办?
- 如果用户只想配置插件
<build>
本节中的插件如何/为什么使用依赖信息<reporting>
?
我找到的文档,我在下面解释了为什么它没有回答这个问题(文档中的混乱实际上是我在这里问这个问题的原因!)。
根据我的阅读、观察和尝试,这是我目前的理解:
脚本部分中的插件
<build>
可以覆盖默认的依赖信息,这将影响该<reporting>
部分中插件的依赖关系。因此,插件依赖信息不需要在<reporting>
section中,只需要在<build>
section中即可。
这个对吗?文档中是否有说明这一点的地方?<build>
为了正确理解和<reporting>
插件配置之间的关系,我缺少哪些细节<dependencies>
?
来自 Maven 文档
它在 Maven 文档中说Using the Reporting vs the Build Tag:
使用
<reporting>
标签 VS<build>
标签在 pom 的or元素中
配置报告插件没有相同的行为!<reporting>
<build>
mvn site
它仅使用在<configuration>
元素中指定的每个报告插件的<reporting>
元素中定义的参数,即站点总是忽略在 中<configuration>
指定的每个插件的元素中定义的参数<build>
。
文档明确说不在and<configuration>
之间共享,但我的问题是关于以及如何/为什么它们只在and never中声明。<build>
<reporting>
<dependencies>
<build>
<reporting>
似乎在中指定的依赖项<build>
确实会转移到<reporting>
插件中。但这是我想要确认/解释的一点。
最小的例子
我遇到了这个问题,在运行时升级 CheckStyle 插件的依赖项以便与一起使用mvn site
,所以这个最小的示例 POM 以 Checkstyle 插件为例演示了这个问题。
<?xml version="1.0" encoding="UTF-8"?>
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>mylib</artifactId>
<version>1.0</version>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<version>3.0.0</version>
<dependencies>
<dependency>
<groupId>com.puppycrawl.tools</groupId>
<artifactId>checkstyle</artifactId>
<version>8.15</version> <!-- Update from default 6.18 to 8.15 -->
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
<reporting>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<version>3.0.0</version>
<!-- Uncommenting will cause syntax error, Dependencies can't be declared in reporting -->
<!-- <dependencies>
<dependency>
<groupId>com.puppycrawl.tools</groupId>
<artifactId>checkstyle</artifactId>
<version>8.15</version>
</dependency>
</dependencies> -->
</plugin>
</plugins>
</reporting>
</project>