2017-07-04 85 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頭可以用適當的配置中除去。