2011-01-10 162 views
1

在將值替換爲文件之前,Maven是否有方法通過簡單的String.replace()調用來轉換屬性的值?在替換Maven屬性時修改Maven屬性的值

我有一個場景,我試圖創建一個包含maven depenedencies與特定目錄結構的程序集。特別是,我希望將每個工件放置到映射到其groupId的目錄結構中。換句話說,如果我有神器org.example.app:library1:jar,我想把它放到目錄org/example/app/library1.jar

我試着創建一個程序集描述符來將相關的工件放入一個子目錄中,但我已經達到了無法將groupId(帶點符號)轉換爲路徑的地步。下面是我正在使用的程序集文件的dependencySet部分。

<dependencySets> 
    <dependencySet> 
    <outputFileNameMapping>${artifact.groupId}/${artifact.artifactId}/${artifact.version}/${artifact.artifactId}-${artifact.version}${dashClassifier?}.${artifact.extension}</outputFileNameMapping> 
    <outputDirectory>.</outputDirectory> 
    <unpack>false</unpack> 
    <useTransitiveDependencies>true</useTransitiveDependencies> 
    <useTransitiveFiltering>false</useTransitiveFiltering> 
    <useProjectArtifact>false</useProjectArtifact> 
    </dependencySet> 
</dependencySets> 

P.S.我還調查了Assembly插件的存儲庫模式,但它包含了太多的信息(例如SHA1和MD5散列,加上Maven POM文件)。

回答

0

程序集描述符文件被程序集插件使用,並且本身沒有嵌入Maven屬性的機制,例如$ {my.property}。但是,作爲解決方法,您可以使用Maven資源插件來「過濾」程序集描述符文件(當它從一個地方複製到另一個地方時)。這將啓用您正在尋找的替換。

然後,您將有Maven程序集插件使用過濾的描述符文件。