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

标签 java maven maven-3

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

相关文章:

java - Logback 变量替换无法在类路径上找到属性文件

maven - 如何配置 maven surefire 以使用作为依赖项的 jvm 代理?

java - 重用生成器名称时会产生什么副作用?

java - Java中堆对象的引用是如何存储的?

使用配置文件属性过滤 Maven 资源

java - cargo 容器异常如何解决

Maven网络问题?

java - HttpClient 参数未添加到执行方法中

java - Selenium 使用 Java 旋转 iOS 设备

java - 无法打开类路径资源 [default/jdbc.properties],因为它不存在