Maven AntRun插件包含tar上的根文件夹

时间:2015-03-06 09:20:18

标签: maven tar

在我的项目中,我需要创建一个包含文件夹完整内容的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>

2 个答案:

答案 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>

要控制存档中的哪些文件夹,您可以使用outputDirectorydirectory控制将哪个文件夹打包到存档中。

答案 1 :(得分:0)

它不是最干净的解决方案,但我解决了添加另一个子文件夹, 所以当我生成jar时,我将它放在可执行文件/可执行文件中,并在我创建第一个可执行文件夹的tar.gz之后。