如何在构建过程中访问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}下的特定目录中?

我将执行以下步骤:

  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的魔力来解决它,并将其解压到特定位置:

    <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>中指定)

在Tome的回答之上,您可以考虑使用某种依赖关系存储库(例如Archiva),以防开发人员之间共享此zip文件。因此,您将拥有相同的共享资源和访问它的通用方法。

最新更新