【发布时间】:2017-11-21 07:05:04
【问题描述】:
我需要解压缩一个 Spring Boot 可执行 jar 作为我的 maven 构建的一部分。
我尝试了两种方法,一种是使用maven-dependency-plugin,第二种是maven-antrun-plugin。两个插件都静默不输出任何内容。
我去调试maven-dependency-plugin,似乎用于解压缩jar的库无法理解可执行的jar格式。
我知道 spring-boot 可执行 jar 不是常规存档(因为它嵌入了一个 shell 脚本)。
我的问题是,如何使用 maven 从 jar 中提取文件?
我认为 exec-maven-plugin 和 unzip 命令的组合会起作用,但这会使我的构建不可移植,所以我想避免它。
编辑: 这是antrun插件的输出:
$ mvn antrun:run@unpack-jar
...
[INFO]
[INFO] --- maven-antrun-plugin:1.8:run (unpack-jar) @ subscriber-rpm ---
[INFO] Executing tasks
main:
[unzip] Expanding: D:\path\conf.jar into D:\path\target\config
[INFO] Executed tasks
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
然而,D:\path\target\config 甚至没有被创建。 maven-dependency 插件也有类似的结果。
【问题讨论】:
-
依赖插件有什么错误?解压后需要重新打包吗?
-
@PanulNUK 没有错误,依赖插件根本看不到 jar 的内容。我认为重新打包与问题无关,但是是的,我确实在之后使用 rpm 插件重新打包了提取的文件。
-
你为什么还要提取它?感觉就像你在做一些你一开始就不应该做的事情。
-
我需要提取一个属性文件,这样我就可以修改配置而无需重新组装jar。
标签: maven spring-boot jar maven-dependency-plugin maven-antrun-plugin