使用 mvn 依赖项解压缩 tar.gz 到正确的路径:解包



在Maven版本中,我想下载并解压缩一个tar.gz的keycloak发行版。

这是我对 maven-dependency-plugin 的相关配置:

<execution>
<id>unpack-keycloak</id>
<goals>
<goal>unpack</goal>
</goals>
<phase>generate-resources</phase>
<configuration>
<artifactItems>
<artifactItem>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-server-dist</artifactId>
<version>${keycloak.version}</version>
<type>tar.gz</type>
<outputDirectory>/opt/jboss/keycloak</outputDirectory>
<includes>**/*</includes>
</artifactItem>
</artifactItems>
</configuration>
</execution>

不幸的是,这导致存档在/opt/jboss/keycloak/keycloak-10.0.1 中解压缩,而不是/opt/jboss/keycloak 。有什么方法可以摆脱中间目录吗?

显然,我知道很多解压缩后移动存档的方法,但我正在寻找在此执行中的解决方案,因为我对同一插件进行了后续执行,希望发行版已经正确到位。

来自文档: https://maven.apache.org/plugins/maven-dependency-plugin/examples/unpacking-filemapper.html

参见第 21-26 行

从OP编辑:
这是正确答案,但由于文档根本不明显,这是一个工作配置

<execution>
<id>unpack-keycloak</id>
<goals>
<goal>unpack</goal>
</goals>
<phase>generate-resources</phase>
<configuration>
<artifactItems>
<artifactItem>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-server-dist</artifactId>
<version>${keycloak.version}</version>
<type>tar.gz</type>
<outputDirectory>/opt/jboss/keycloak</outputDirectory>
<includes>**/*</includes>
<fileMappers>
<org.codehaus.plexus.components.io.filemappers.RegExpFileMapper>
<pattern>^Qkeycloak-${keycloak.version}/E</pattern>
<replacement>./</replacement>
</org.codehaus.plexus.components.io.filemappers.RegExpFileMapper>
</fileMappers>
</artifactItem>
</artifactItems>
</configuration>
</execution>

最新更新