Maven依赖关系解压缩-跳过顶级目录

时间:2019-08-27 18:00:42

标签: maven maven-assembly-plugin maven-dependency-plugin

我们有一个工件,它是我们要解压缩的第三方zip文件,并将解压缩的结构包含在我们自己的程序集中。

问题是解压缩的zip文件的顶级目录是一个丑陋的目录名称,其中包含许多版本信息。在我们的最终装配中,我们只想让这个解压缩的结构在一个简单的目录名下运行。

我们希望解压缩以“跳过”顶级目录,或者希望程序集能够通过通配符指定文件集的顶级目录,或者我们需要一个构建步骤(antrun插件?)来重命名该目录顶层目录-再次使用通配符-保持一致。

谷歌搜索表明,在regexp类型中添加a将允许我重写文件名,但显然,maven程序集插件自然不支持该文件名。

1 个答案:

答案 0 :(得分:0)

我知道了。

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-antrun-plugin</artifactId>
  <version>1.8</version>
  <executions>
    <execution>
      <id>copy</id>
      <phase>package</phase>
      <configuration>
        <tasks>
          <copy todir="${project.build.directory}/dependency/simple_name">
            <fileset dir="${project.build.directory}/dependency"/>
            <regexpmapper from="^prefix[^/]*/(.*)$$" to="\1"/>
          </copy>
        </tasks>
      </configuration>
      <goals><goal>run</goal></goals>
    </execution>
  </executions>
</plugin>

这会将解压缩后的内容从复杂目录复制到一个简单目录中。这有点浪费,因为它留下了复杂的结构,但我不在乎。