Maven:使用外部下载的文件构建tar.gz文件

时间:2014-11-26 13:07:27

标签: maven

我正在尝试使用maven构建一个project.tar.gz文件,其中包含从网络上某个位置下载的./data文件夹中的一些数据。

  • project.tar.gz
    • 数据
      • somefile.txt
      • some_other_file.zip

目前我正在尝试使用程序集插件来解决这个问题,到目前为止还没有取得多大成功。

到目前为止,以下工作:我将文件下载到目标/数据 但现在我需要将该文件打包在tar文件中。

<build>
    <plugins>
        <plugin>
            <groupId>com.googlecode.maven-download-plugin</groupId>
            <artifactId>download-maven-plugin</artifactId>
            <version>1.2.1</version>
            <executions>
                <execution>
                    <phase>generate-resources</phase>
                    <goals>
                        <goal>wget</goal>
                    </goals>
                    <configuration>
                        <url>http://www.lolcats.com/images/u/08/23/lolcatsdotcomcm90ebvhwphtzqvf.jpg</url>
                        <outputDirectory>${project.build.directory}/data</outputDirectory>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

2 个答案:

答案 0 :(得分:2)

我最终使用https://github.com/maven-download-plugin/maven-download-plugin

<build>
    <plugins>
        <plugin>
            <groupId>com.googlecode.maven-download-plugin</groupId>
            <artifactId>download-maven-plugin</artifactId>
            <version>1.2.1</version>
            <executions>
                <execution>
                    <phase>generate-resources</phase>
                    <goals>
                        <goal>wget</goal>
                    </goals>
                    <configuration>
                        <url>${some.jar.file.url}</url>
                        <outputDirectory>${project.build.directory}/lib</outputDirectory>
                        <url>${some.models.zip.url}</url>
                        <unpack>true</unpack>
                        <outputDirectory>${project.build.directory}/data</outputDirectory>
                    </configuration>
                </execution>
            </executions>
        </plugin>

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>2.2-beta-5</version> <!-- Old -->
            <executions>
                <execution>  <!-- Build tar.gz archive. -->
                    <id>tar</id>
                    <phase>package</phase>
                    <goals>
                        <goal>single</goal>
                    </goals>
                    <configuration>
                        <descriptors>
                            <descriptor>src/tar.xml</descriptor>
                        </descriptors>
                        <finalName>project-${project.version}-el6</finalName>
                        <appendAssemblyId>false</appendAssemblyId>
                    </configuration>
                </execution>  <!-- /NewStuff -->
            </executions>
        </plugin>
    </plugins>
</build>

使用tar.xml:

<assembly>
<id>tar</id>
<formats>
    <format>tar.gz</format>
</formats>
<fileSets>
    <fileSet>
        <directory>target/data</directory>
        <outputDirectory>/data</outputDirectory>
    </fileSet>
    <fileSet>
        <directory>target/lib</directory>
        <outputDirectory>/lib</outputDirectory>
    </fileSet>
    <fileSet>
        <directory>meta</directory>
        <outputDirectory>/meta</outputDirectory>
    </fileSet>
</fileSets>

答案 1 :(得分:1)

我个人不会为此使用Maven; Maven是standard processes的工具。你想做的事情非常特别。

直接查看Maven AntRun Plugin或使用Ant。这样,您就可以创建一个完全符合您要求的脚本,而无需一直与Maven的惯例作斗争。