首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Maven可以将WAR打包为.tar.gz吗?

Maven可以将WAR打包为.tar.gz吗?
EN

Stack Overflow用户
提问于 2019-10-24 14:24:57
回答 1查看 842关注 0票数 1

我正在Maven中构建一个WAR应用程序,我需要将它部署到Docker。问题是,docker不支持zip格式(但可以使用.tar.gz或.tar.xz)。

那么,我如何将我的mywebapp-1.0.0.war打包为mywebapp-1.0.0.tar.gz

我们有这样的要求,所以对坞映像执行硬化步骤就变得更容易了。

我试着使用程序集插件,它产生了一个target/mywebapp-1.0.0.tar.gz。但是,它最终会将整个WAR文件放入.tar.gz文件中,而不是其内容。这是我的assembly.xml文件:

代码语言:javascript
复制
<assembly xmlns="http://maven.apache.org/ASSEMBLY/2.0.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.0.0
                      http://maven.apache.org/xsd/assembly-2.0.0.xsd">
  <id>distribution</id>
  <formats>
    <format>tar.gz</format>
  </formats>
  <fileSets>
    <fileSet>
      <outputDirectory>/</outputDirectory>
      <includes>
        <include>target/mywebapp-1.0.0.war</include>
      </includes>
    </fileSet>
  </fileSets>
</assembly>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-24 14:28:40

虽然我觉得这个需求很奇怪(应用服务器应该解压您的war,而不是您),但是我想通过对用于构建war的target中的目录进行锁定是可能的。

在包步骤之前,war的所有文件都聚集在目标下方的一个目录中(我忘记了名称,但应该很容易进行反向工程)--只需使用程序集插件打包该目录即可。

按OP:编辑

我想接受这个答案,但我也希望它对其他人有用,所以我添加了工作解决方案(assembly.xml文件)。下面是:

代码语言:javascript
复制
<assembly xmlns="http://maven.apache.org/ASSEMBLY/2.0.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.0.0
    http://maven.apache.org/xsd/assembly-2.0.0.xsd">
  <id>docker</id>
  <formats>
    <format>tar.gz</format>
  </formats>
  <includeBaseDirectory>false</includeBaseDirectory>
  <fileSets>
    <fileSet>
      <directory>target/${project.build.finalName}</directory>
      <outputDirectory>.</outputDirectory>
    </fileSet>
  </fileSets>
</assembly>

除了典型的war文件外,此解决方案还生成文件target/mywebapp-1.0.0-docker.tar.gz

注意,它添加了docker分类器。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58543473

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档