我有一个构建过程,其中涉及一个非常大的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}
下的特定目录中?
答案 0 :(得分:2)
我会执行以下步骤:
正如您所做的那样,将该项目上传到存储库管理器,并将其声明为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>
使用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>
使用其他插件执行任何所需的工作,引用解压缩的位置(在<outputDirectory>
中指定)
答案 1 :(得分:1)
除了Tome的答案之外,你可以考虑使用某种依赖库(例如Archiva),以防这个zip文件在开发人员之间共享。因此,您将拥有相同的共享资源和访问它的常用方法。