2011-01-10 164 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程序集插件使用过滤的描述符文件。