2017-07-04 83 views
1

在pom.xml中声明所有使用的maven插件的版本通常是有帮助的做法,例如,在新的插件版本发布后使旧的版本可以重现。对于新的项目:有没有办法以XML格式输出当前在构建中使用的插件,我可以很容易地将其放入pom.xml的pluginManagement部分?列表实际使用的XML格式的maven插件pom

我发现versions:display-plugin-updates确实输出与版本的插件,尚未固定的,并且确实help:effective-pom<build><plugins>隐式显示实际使用的版本,但乱码与配置,处决和不需要用于pluginManagement部的其他信息。所以我正在寻找更容易的东西 - 就像mvn -DoutputXML=true dependency:analyze对依赖关系所做的那样。

回答

0

解析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头可以用适当的配置中除去。