我们有一个工件,它是我们要解压缩的第三方zip文件,并将解压缩的结构包含在我们自己的程序集中。
问题是解压缩的zip文件的顶级目录是一个丑陋的目录名称,其中包含许多版本信息。在我们的最终装配中,我们只想让这个解压缩的结构在一个简单的目录名下运行。
我们希望解压缩以“跳过”顶级目录,或者希望程序集能够通过通配符指定文件集的顶级目录,或者我们需要一个构建步骤(antrun插件?)来重命名该目录顶层目录-再次使用通配符-保持一致。
谷歌搜索表明,在regexp类型中添加a将允许我重写文件名,但显然,maven程序集插件自然不支持该文件名。
答案 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>
这会将解压缩后的内容从复杂目录复制到一个简单目录中。这有点浪费,因为它留下了复杂的结构,但我不在乎。