Maven存档包含不同文件的多个战争

时间:2018-08-21 09:18:13

标签: java spring maven jenkins war

我有一个Maven项目,其中包含三个资源,如下所示:

src/main/webapp/file.xml
src/main/webapp/fileA.xml
src/main/webapp/fileB.xml

我的目标是使用相同的jenkins任务存档三个不同的战争包,其中每个资源包都被重命名并称为file.xml

结果应为:

package-with-file.war
package-with-fileA.war
package-with-fileB.war
  • 第一个软件包应删除fileA.xmlfileB.xml
  • 第二秒钟应删除file.xmlfileB.xml,然后在fileA.xml中重命名file.xml
  • 三分之一应删除file.xmlfileA.xml,并在fileB.xml中重命名file.xml

我想一种方法可以使用profiles并使用maven-deploy-plugin为每个软件包定义不同的classifierfilename,但是我之前不了解如何重命名文件

<plugin>
  <artifactId>maven-deploy-plugin</artifactId>
  [...]
  <configuration>
    <groupId>${project.groupId}</groupId>
    <artifactId>${project.artifactId}</artifactId>
    <packaging>war</packaging>
    <version>${project.version}</version>
    <classifier>fileA</classifier>
    <file>
       ${project.build.directory}/${project.build.finalName}-fileA.war
    </file>
  </configuration>
  [...]
</plugin>

2 个答案:

答案 0 :(得分:1)

我会将文件放在3个不同的目录中:src/main/webapp-A|B|C/file.xml 然后编写3个不同的maven-war-plugin执行,每个执行都添加以下目录之一:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-war-plugin</artifactId>
  <configuration>
    <webResources>
        <resource>
            <directory>src/main/webapp-A</directory>
            <targetPath>/</targetPath>
        </resource>
    </webResources>
  </configuration>
</plugin>

-编辑1-

我认为不可能从一个目录中进行。您必须使用不同的目录或文件的名称。

答案 1 :(得分:0)

使用reference的maven shade plugin可以轻松完成“文件包含和排除部分”。

使用专用插件http://code.google.com/p/maven-file-rename-plugin/可以重命名文件。