java—从build by classifier的maven依赖项中排除某些.jar

vs91vp4v  于 2021-06-30  发布在  Java
关注(0)|答案(1)|浏览(597)

我的项目包括nd4j本机平台依赖项,其中包括用于windows、linux和mac的.jars。这个应用程序是在windows/mac机器上开发的,然后部署到linux上,所以我想通过排除这些其他平台jar来节省部署空间,这些jar在.war构建时占用的空间大于400 mb。热释光;dr,我想排除所有以linux-x86\u 64结尾的.jar。
pom中的依赖关系:

<dependency>
    <groupId>org.nd4j</groupId>
    <artifactId>nd4j-native-platform</artifactId>
    <version>1.0.0-beta7</version>
    <classifier>linux-x86_64</classifier>
</dependency>

在依赖项标记中,我看不到任何通过分类器排除它们的方法,似乎只能通过groupid和artifactid排除它们。我还尝试在.war插件中使用packagingexcludes和warsourceexcludes,但没有起到任何作用:

<plugin>
    <artifactId>maven-war-plugin</artifactId>
    <version>3.2.3</version>
    <configuration>
        <packagingExcludes>
            WEB-INF/lib/nd4j-native-1.0.0-beta7-windows-x86_64.jar,
            WEB-INF/lib/nd4j-native-1.0.0-beta7-android-x86.jar,
            WEB-INF/lib/nd4j-native-1.0.0-beta7-macosx-x86_64.jar,
            WEB-INF/lib/nd4j-native-1.0.0-beta7-android-x86_64.jar,
            WEB-INF/lib/nd4j-native-1.0.0-beta7-linux-ppc64le.jar,
            WEB-INF/lib/nd4j-native-1.0.0-beta7-android-arm64.jar,
            WEB-INF/lib/nd4j-native-1.0.0-beta7-android-arm.jar,
            WEB-INF/lib/openblas-0.3.9-1-1.5.3-windows-x86_64.jar,
            WEB-INF/lib/nd4j-native-1.0.0-beta7-linux-armhf.jar,
            WEB-INF/lib/openblas-0.3.9-1-1.5.3-windows-x86.jar,
            WEB-INF/lib/openblas-0.3.9-1-1.5.3-windows-x86.jar,
            WEB-INF/lib/openblas-0.3.9-1-1.5.3-linux-armhf.jar,
            WEB-INF/lib/openblas-0.3.9-1-1.5.3-linux-ppc64le.jar,
            WEB-INF/lib/openblas-0.3.9-1-1.5.3-linux-arm64.jar
        </packagingExcludes>
    </configuration>
</plugin>

使用maven 3.6.3。

yv5phkfx

yv5phkfx1#

对于大多数使用javacpp的东西来说,正确的方法是设置 javacpp.platform 财产。
当使用 mvn -Djavacpp.platform=linux-x86_64 你只会得到那个特定的平台,其他什么都得不到。这也适用于所有其他可传递的依赖项,例如opencv。
你可以试试跑步 mvn -Djavacpp.platform=linux-x86_64 dependency:tree 看看它能不能用。

相关问题