使用 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>