如何在构建过程中访问Maven依赖项工件?

时间:2015-03-18 11:53:31

标签: maven

我有一个构建过程,其中涉及一个非常大的zip文件,其中包含我需要在package阶段使用的大量静态数据。

该文件太大,我无法将其放入源代码存储库,因此显而易见的解决方案是将其安装在私有Maven存储库中,并将其作为编译时依赖项拉入。

<dependency>
     <groupId>very.big</groupId>
     <artifactId>file</artifactId>
     <version>1.0</version>
     <type>zip</type>
    <scope>compile</scope>
</dependency>

到目前为止一直很好,但是我仍然需要解压缩和操作文件的内容以使用Assembly插件或Antrun插件构建我的模块。

关于如何从我的POM中引用zip文件的任何想法? (当然,没有硬编码本地存储库位置。)或者更一般地说,如何将依赖项解压缩到${project.build.directory}下的特定目录中?

2 个答案:

答案 0 :(得分:2)

我会执行以下步骤:

  1. 正如您所做的那样,将该项目上传到存储库管理器,并将其声明为POM中的依赖项,需要让您解决它:

    <dependency>
         <groupId>very.big</groupId>
         <artifactId>file</artifactId>
         <version>1.0</version>
         <type>zip</type>
         <scope>compile</scope> <!-- or another scope like provided/optional -->
     </dependency>
    
  2. 使用dependency:unpack-dependencies mojo解析它并在特定位置解压缩:

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-dependency-plugin</artifactId>
        <version>2.10</version>
        <executions>
            <execution>
                <id>unpack-dependencies</id>
                <phase>package</phase> <!-- change it if needed -->
                <goals>
                    <goal>unpack-dependencies</goal>
                </goals>
                <configuration>
                    <includeArtifactIds>file</includeArtifactIds>
                    <outputDirectory>${project.build.directory}/bigzip</outputDirectory>
                </configuration>
            </execution>
        </executions>
    </plugin>
    
  3. 使用其他插件执行任何所需的工作,引用解压缩的位置(在<outputDirectory>中指定)

答案 1 :(得分:1)

除了Tome的答案之外,你可以考虑使用某种依赖库(例如Archiva),以防这个zip文件在开发人员之间共享。因此,您将拥有相同的共享资源和访问它的常用方法。