在我的项目中,我需要创建一个包含文件夹完整内容的tar。 我用maven antRun插件做到了。 我的问题是主根不在焦油中。 如何插入文件夹?
居。 我有
Target
---temp
---Example
------aaa.png
------bbbb.png
------rsc
---------ccc.png
我的file.tar.gz我有
aaa.png
bbbb.png
rsc
---ccc.png
我想
---Example
------aaa.png
------bbbb.png
------rsc
---------ccc.png
创建tar的代码
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.7</version>
<executions>
<execution>
<id>tar batch</id>
<phase>package</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<target name="tar.gz folder">
<echo message="Starting to compress with tar.gz ${main.builddir}${file.separator}${tar.name.batch} in ${main.builddir}${file.separator}${tar.name.batch}.tar.gz " />
<tar destfile="${main.builddir}${file.separator}${tar.name.batch}.tar" basedir="${main.builddir}${file.separator}${tar.name.batch}" />
<gzip destfile="${project.build.directory}${file.separator}${tar.name.batch}.tar.gz" src="${main.builddir}${file.separator}${tar.name.batch}.tar" />
</target>
</configuration>
</execution>
</executions>
</plugin>
答案 0 :(得分:2)
我建议使用maven-assembly-plugin代替maven-antrun-plugin。您需要在pom文件中进行配置,如下所示:
<build>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
<id>create-archives</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<descriptors>
<descriptor>src/assembly/assembly.xml</descriptor>
</descriptors>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
此外,您需要有一个assembly descriptor which describes应该打包到存档中的内容,如下所示:
<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
<id>dist-assembly</id>
<formats>
<format>tar</format>
</formats>
<!--
! The following will include the base directory incl. version
! into the resulting tar.
! The default value is: true.
! <includeBaseDirectory>true</includeBaseDirectory>
-->
<fileSets>
<fileSet>
<directory>folder</directory>
<outputDirectory>.</outputDirectory>
</fileSet>
</fileSets>
</assembly>
要控制存档中的哪些文件夹,您可以使用outputDirectory
。 directory
控制将哪个文件夹打包到存档中。
答案 1 :(得分:0)
它不是最干净的解决方案,但我解决了添加另一个子文件夹, 所以当我生成jar时,我将它放在可执行文件/可执行文件中,并在我创建第一个可执行文件夹的tar.gz之后。