为什么只能在<dependencies>
部分的<plugin>
部分而不是<build>
的{{1}}部分中定义<reporting>
的{{1}}?
pom
语法不允许pom.xml
中的<dependencies>
?
<reporting>
配置插件并设置依赖项版本怎么办?<reporting>
部分中的插件如何/为什么使用<build>
依赖性信息?我找到的文档,下面我解释为什么它没有回答问题(文档的困惑实际上就是为什么我在这里问这个问题!)。
根据我已阅读,观察和尝试的内容,这是我目前的理解:
脚本
<reporting>
部分中的插件可以覆盖默认的依赖项信息,这将影响<build>
部分中插件的依赖项。因此,插件依赖项信息不必位于<reporting>
部分,只需位于<reporting>
部分。
这是正确的吗?在文档中是否有说明这一点的地方?为了正确了解<build>
的{{1}}和<build>
插件配置之间的关系,我缺少什么细节?
它在Maven文档Using the Reporting vs the Build Tag中说:
使用
<reporting>
标签与<dependencies>
标签
在pom的<reporting>
或<build>
元素中配置报告插件不会有相同的行为!
<reporting>
它仅使用在<build>
元素中指定的每个报告插件的mvn site
元素中定义的参数,即,站点始终忽略在{{中指定的每个插件的<configuration>
元素中定义的参数1}}。
文档明确指出<reporting>
与<configuration>
之间没有共享,但是
我的问题是关于<build>
以及如何/为什么只在<configuration>
中声明而不是<build>
。
似乎<reporting>
do 中指定的依赖项会延续到<dependencies>
插件中。但这是我要确认/解释的一点。
我遇到了与<build>
一起使用的问题upgrading the dependencies for the CheckStyle plugin at runtime,因此这个最小的POM示例以Checkstyle插件为例来演示该问题。
<reporting>
答案 0 :(得分:1)
我会说情况并不是那么简单-因为<dependencies>
部分中可能有<reporting>
!
我认为重点在于插件本身(因此每个插件可能有所不同)。
但是首先,<build>
和<reporting>
之间有什么区别:
<build>
用于编译,测试-即生成/分析/运行代码-与mvn clean install
<reporting>
用于在生成mvn site
所以问题是checkstyle插件在文档生成过程中是否需要您的依赖关系-我想不是-所以checkstyle拒绝<reporting>
中的所有依赖关系。
因此,要证明报告中的依赖关系是可能的,请查看Spotbug(另一个著名的分析器):
<build>
<plugins>
<plugin>
<groupId>com.github.spotbugs</groupId>
<artifactId>spotbugs-maven-plugin</artifactId>
<version>3.1.12.1</version>
<configuration>
<xmlOutput>true</xmlOutput>
<spotbugsXmlWithMessages>true</spotbugsXmlWithMessages>
<spotbugsXmlOutputDirectory>target/site</spotbugsXmlOutputDirectory>
<failOnError>false</failOnError>
<includeTests>true</includeTests>
<dependencies>
<dependency>
<groupId>com.mebigfatguy.fb-contrib</groupId>
<artifactId>fb-contrib</artifactId>
<version>7.4.3.sb</version>
</dependency>
<plugin>
<groupId>com.h3xstream.findsecbugs</groupId>
<artifactId>findsecbugs-plugin</artifactId>
<version>LATEST</version>
</plugin>
</dependencies>
</configuration>
</plugin>
</plugins>
</build>
<reporting>
<plugins>
<plugin>
<groupId>com.github.spotbugs</groupId>
<artifactId>spotbugs-maven-plugin</artifactId>
<version>3.1.12.1</version>
<configuration>
<xmlOutput>true</xmlOutput>
<spotbugsXmlWithMessages>true</spotbugsXmlWithMessages>
<spotbugsXmlOutputDirectory>target/site</spotbugsXmlOutputDirectory>
<failOnError>false</failOnError>
<includeTests>true</includeTests>
<dependencies>
<dependency>
<groupId>com.mebigfatguy.fb-contrib</groupId>
<artifactId>fb-contrib</artifactId>
<version>7.4.3.sb</version>
</dependency>
<plugin>
<groupId>com.h3xstream.findsecbugs</groupId>
<artifactId>findsecbugs-plugin</artifactId>
<version>LATEST</version>
</plugin>
</dependencies>
</configuration>
</plugin>
</plugins>
</reporting>
请仔细看这个示例-因为这里的<dependencies>
是<configuration>
的一部分。因此,仔细阅读每个插件的文档总是明智的。
有关完整的maven pom.xml,请查看我的小型OpenSource TemplateEngine,其中包括许多不仅适用于maven的最佳实践。