使用 mvn dependency:unpack 将 tar.gz 解压缩到正确的路径
Unpack tar.gz to proper path using mvn dependency:unpack
在 Maven 构建中,我想下载并解压缩 keycloak 的 tar.gz 分发。
这是我的相关配置 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>
在 Maven 构建中,我想下载并解压缩 keycloak 的 tar.gz 分发。
这是我的相关配置 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>