gpt4 book ai didi

java - 以 XML 格式列出 pom 实际使用的 Maven 插件

转载 作者:行者123 更新时间:2023-11-30 06:37:54 27 4
gpt4 key购买 nike

在 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()), ":"),
"&#10;"
)

将产生这种输出:

<?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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com