如何防止maven组件插件重命名工件

时间:2016-02-25 11:11:29

标签: maven maven-assembly-plugin rpm-maven-plugin

在我的maven项目中,我需要(相当大量的)RPM。为了方便部署,我想将所有RPM组合成一个存档(.tar.gz)。装配在一个单独的模块中运行,该模块取决于所有RPM模块。

为此,我有以下assembly.xml

<?xml version="1.0"?>
<assembly>
    <id>myproject-rpm-package</id>
    <formats>
        <format>tar.gz</format>
    </formats>
    <baseDirectory>${project.parent.parent.name}-${project.version}-rpms</baseDirectory>

    <dependencySets>
        <dependencySet>
            <useProjectArtifact>false</useProjectArtifact>
            <includes>
                <!-- Include only the RPMs -->
                <include>*:rpm</include>
            </includes>
            <outputDirectory>/</outputDirectory>
        </dependencySet>
    </dependencySets>
</assembly>

这很有效,但它重命名我的所有RPMS,遵循以下格式:<projectname>-<version>.rpm。丢失RPM命名约定中的有用属性:<rpm name>-<version>-<release>.noarch.rpm。 RPMS仍然可以正常工作。

我怀疑这是来自maven汇编属性outputFileNameMapping

我的假设是否正确?如果是这样,我怎么能阻止程序集插件重命名我的RPM文件?

1 个答案:

答案 0 :(得分:1)

你的假设是正确的。 maven-assembly-plugin会将您的程序集项目的所有依赖项重命名为outputFileNameMapping指定的格式:

  

设置此程序集中包含的所有依赖项的映射模式。   默认值为:${artifact.artifactId}-${artifact.version}${dashClassifier?}.${artifact.extension}

该文档包含您可以在此属性中指定的all values

  

可以在outputFileNameMapping参数中使用哪些属性。

     

您可以使用:

     
      
  • 您的构建中可用的所有系统或maven属性,语法为${myProperty}
  •   
  • 所有环境变量${env.XXX},其中XXX是环境变量。
  •   
  • 特殊${dashClassifier?}属性(见上文)。
  •   
  • 所有工件属性(来自Artifact类),如:      
        
    • ${artifact.groupId}:工件groupId。
    •   
    • ${artifact.artifactId}:神器artifactId。
    •   
    • ${artifact.version}:工件分类器。
    •   
    • ${artifact.baseVersion}:神器基础版本(对于SNAPSHOT,它总是-SNAPSHOT而不是它的时间戳,即使你没有自己构建它)。
    •   
    • ${artifact.classifier}:工件分类器。
    •   
    • ${artifact.scope}:工件范围。
    •   
    • ...
    •   
  •   
     

${module.XXXXX}用于项目模块工​​件时,可以使用${artifact.properties.*}

文档中似乎缺少它,但从2.2版开始,您还可以使用<properties>属性,如JIRA MASSEMBLY-498中所述。这将引用您在<outputFileNameMapping>${artifact.artifactId}-${artifact.version}.noarch.rpm</outputFileNameMapping> 元素内的此工件中设置的自定义属性。

所以,例如,你可以:

{{1}}

请注意,插件始终根据该模式重命名文件。没有选项可以跳过重命名。