如何在组装弹簧启动项目时重命名文件?

时间:2016-12-09 16:15:21

标签: maven spring-boot

我有以下assembly.xml。我试图找出包含文件的方式,我可以将它们重命名为其他内容。目前,我的tar将war文件作为project-1.0.0.0.war,我希望它是project.war。我怎么能做到这一点?

<assembly>
<id>${version}-tar</id>
<formats>
    <format>tar.gz</format>
</formats>
<includeBaseDirectory>true</includeBaseDirectory>
<baseDirectory>project-${version}</baseDirectory>

<fileSets>
    <fileSet>
        <directory>target</directory>
        <outputDirectory>.</outputDirectory>
        <includes>
            <include>project-${version}.war</include>
        </includes>
    </fileSet>
    <fileSet>
        <directory>etc/bin</directory>
        <outputDirectory>.</outputDirectory>
        <includes>
            <include>start</include>
            <include>stop</include>
        </includes>
    </fileSet>
</fileSets>

2 个答案:

答案 0 :(得分:1)

您希望添加:

<build>
    ...
    <finalName>${artifactId}</finalName>
    ...
</build>

Documentation

答案 1 :(得分:1)

如果要控制程序集中文件的目标名称,则不应使用<fileSet>,而应使用<file>。原因是第一个将几个文件组合在一起,因此,没有提供控制组中每个文件名称的方法。由于<file>仅定位单个文件,因此您可以使用<destName>元素控制目标名称:

  

在outputDirectory中设置目标文件名。默认值与源文件的名称相同。

你应该改为:

<files>
  <file>
    <source>target/project-${version}.war</directory>
    <destName>project.war</destName>
  </file>
</files>
<!-- the other "fileSets" for etc/bin, unchanged -->

而不是<fileSet>。这将确保<source>元素中指定的文件在生成的程序集中重命名为<destName>