我有一个构建过程,它涉及一个非常大的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}
下的特定目录中?
我将执行以下步骤:
-
正如您所做的那样,将该项目上传到存储库管理器,并将其声明为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
的魔力来解决它,并将其解压到特定位置:<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>
中指定)
在Tome的回答之上,您可以考虑使用某种依赖关系存储库(例如Archiva),以防开发人员之间共享此zip文件。因此,您将拥有相同的共享资源和访问它的通用方法。