【问题标题】:Maven archive multiple war containing different filesMaven存档多个包含不同文件的战争
【发布时间】:2019-01-27 10:48:41
【问题描述】:

我有一个 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,并在file.xml中重命名fileA.xml
  • 第三个应该删除file.xmlfileA.xml,并在file.xml中重命名fileB.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>

【问题讨论】:

    标签: java spring maven jenkins war


    【解决方案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--

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

    【讨论】:

    • 谢谢,这是一个很好的解决方案,但我忘了提到该文件必须保留在目录 src/main/webapp/file.xml 中。我现在无法更改目录。战争插件会将目录的内容复制到路径中还是按原样使用目录?
    【解决方案2】:

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

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

    【讨论】:

    • 你能举个例子吗?
    猜你喜欢
    • 2011-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-11
    • 2014-04-07
    • 1970-01-01
    • 2012-03-29
    • 1970-01-01
    相关资源
    最近更新 更多