我有2个.zip文件:shared-lib-windows.zip和shared-lib-linux.zip。一个maven依赖项jar在WEB-INF / lib /下查找shared-lib目录,并期望.exe或.out文件存在于shared-lib目录中。
我如何在pom.xml中设置.zip文件,以便提取适当的zip文件,并将其解压缩到重命名的(shared-lib,没有-os)目录?
我已经将Maven依赖项(jar)设置为:
<profiles>
<profile>
<id>Linux</id>
<dependencies>
<dependency>
<groupId>com.dependency</groupId>
<artifactId>depedency-linux</artifactId>
<version>0.0.9</version>
</dependency>
</dependencies>
</profile>
<profile>
<id>Windows</id>
<dependencies>
<dependency>
<groupId>com.dependency</groupId>
<artifactId>dependency-windows</artifactId>
<version>0.0.9</version>
</dependency>
</dependencies>
</profile>
</profiles>
现在我只希望Maven从src / main / resources或.m2 /.../中拾取.zip文件,然后魔术!
我调查了建议使用maven-ant-plugin的答案,但有人提到它将为uncool。
[编辑:添加信息]我有一个打包为.war的Maven Web项目,并已部署到Tomcat。此外,.exe / .out文件是第三方的依赖关系,大小分别为120/150 MB。由于我的git不支持大文件,并且二进制文件也不会更新,因此我已将其压缩并添加到了我的Git管理的Maven Web项目中。
我浏览了有关Maven概要文件,阶段和属性的官方文档。我想出了一个使用maven-antrun-plugin的解决方案。我仍在寻找不依赖它的解决方案。
在Linux上使用mvn package -P Linux
运行以下pom.xml:>
<profiles> <profile> <id>Linux</id> <properties> <binary.zip>${project.basedir}/src/main/resources/binary-linux.zip</binary.zip> <unzip.folder>${project.build.directory}/${project.build.finalName}/WEB-INF/lib/binary</unzip.folder> </properties> <dependencies> <dependency> <groupId>com.dependency</groupId> <artifactId>depedency-linux</artifactId> <version>0.0.9</version> </dependency> </dependencies> </profile> <profile> <id>Windows</id> <properties> <binary.zip>${project.basedir}/src/main/resources/binary-windows.zip</binary.zip> <unzip.folder>${project.build.directory}/${project.build.finalName}/WEB-INF/lib/binary</unzip.folder> </properties> <dependencies> <dependency> <groupId>com.dependency</groupId> <artifactId>dependency-windows</artifactId> <version>0.0.9</version> </dependency> </dependencies> </profile> </profiles> ... <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-antrun-plugin</artifactId> <version>1.8</version> <executions> <execution> <id>unzip-binary</id> <phase>prepare-package</phase> <configuration> <tasks> <echo message="unzip the binary" /> <unzip src="${binary.zip}" dest="${unzip.folder}" /> </tasks> </configuration> <goals> <goal>run</goal> </goals> </execution> </executions> </plugin>
[这会将.zip解压缩到..WEB-INF / lib / binary目录(在prepare-package阶段),然后使用maven-war-plugin插件将其归档到.war(在package阶段)。] >