在 pom.xml 中声明所有使用的 Maven 插件的版本通常是一种有用的做法,例如在新的插件版本出现后,使旧版本可以重现。对于一个新项目:有没有办法以 XML 格式输出当前在构建中使用的插件,我可以轻松地将其放入 pom.xml 的pluginManagement 部分?
我发现versions:display-plugin-updates确实输出版本尚未修复的插件,并且 help:effective-pom确实在 <build><plugins>
中隐式显示实际使用的版本,但由于配置、执行和其他pluginManagement部分不需要的信息而出现乱码。所以我正在寻找更简单的东西 - 就像 mvn -DoutputXML=true dependency:analyze对于依赖关系确实如此。
最佳答案
如何解析 help: effective-pom
的输出?
使用 grep
获得快速而肮脏的解决方案:
$ mvn help:effective-pom -Doutput=effective-pom.xml
$ grep "<plugin>" -A 3 effective-pom.xml
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.3</version>
</plugin>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.2-beta-5</version>
</plugin>
<plugin>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.8</version>
</plugin>
[...]
或者使用 XML 解析器并使用 XSLT 或 XQuery 来获得更强大的解决方案。
例如以下 XQuery 代码
declare default element namespace "http://maven.apache.org/POM/4.0.0";
string-join(
for $plugin in //plugin
return string-join(($plugin/groupId/text(), $plugin/artifactId/text(), $plugin/version/text()), ":"),
" "
)
将产生这种输出:
<?xml version="1.0" encoding="UTF-8"?>maven-antrun-plugin:1.3
maven-assembly-plugin:2.2-beta-5
maven-dependency-plugin:2.8
maven-release-plugin:2.3.2
maven-source-plugin:3.0.1
maven-clean-plugin:2.5
maven-install-plugin:2.4
maven-deploy-plugin:2.7
maven-site-plugin:3.3
请注意,可以通过适当的配置删除 xml header 。
关于java - 以 XML 格式列出 pom 实际使用的 Maven 插件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44902044/