从分类器构建的 Maven 依赖项中排除某些 .jars
Excluding certain .jars from a Maven dependency from build by classifier
我的项目包括 nd4j-native-platform 依赖项,其中包括 windows、linux 和 mac 的 .jars。该应用程序是在 windows/mac machines 上开发的,然后部署到 Linux,所以我想通过排除这些占用 > 400 的其他平台 jar 来节省部署 space .war 构建时的 MB。 Tl;dr,我想排除所有不以 linux-x86_64.
结尾的 .jars
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.
对于大多数使用 JavaCPP 的事物,正确的处理方法是设置 javacpp.platform
属性.
使用 mvn -Djavacpp.platform=linux-x86_64
进行构建时,您将只会获得该特定平台,而不会获得其他任何东西。这也将适用于所有其他传递依赖项,例如opencv.
您可以尝试 运行 mvn -Djavacpp.platform=linux-x86_64 dependency:tree
看看它是否有效。
我的项目包括 nd4j-native-platform 依赖项,其中包括 windows、linux 和 mac 的 .jars。该应用程序是在 windows/mac machines 上开发的,然后部署到 Linux,所以我想通过排除这些占用 > 400 的其他平台 jar 来节省部署 space .war 构建时的 MB。 Tl;dr,我想排除所有不以 linux-x86_64.
结尾的 .jarspom 中的依赖项:
<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.
对于大多数使用 JavaCPP 的事物,正确的处理方法是设置 javacpp.platform
属性.
使用 mvn -Djavacpp.platform=linux-x86_64
进行构建时,您将只会获得该特定平台,而不会获得其他任何东西。这也将适用于所有其他传递依赖项,例如opencv.
您可以尝试 运行 mvn -Djavacpp.platform=linux-x86_64 dependency:tree
看看它是否有效。