Maven:将基于OS的zip文件解压缩到WEB-INF / lib

问题描述 投票:1回答:1

我有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项目中。

java maven zip pom.xml
1个回答
0
投票

我浏览了有关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阶段)。] >

© www.soinside.com 2019 - 2024. All rights reserved.