我正在使用maven assembly插件打包我的项目的发行版,该发行版包含一个包含依赖项jar的lib文件夹、一个包含资源的config文件夹和包含项目类文件的jar文件。我需要从lib文件夹中的一个依赖项jar中排除一个包。
assembly插件有一个解包依赖项JAR的选项,如果使用了这个选项,那么您可以使用assembly.xml排除包,如下所示:
<assembly>
<formats>
<format>tar</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<dependencySets>
<dependencySet>
<unpack>true</unpack>
<useProjectArtifact>false</useProjectArtifact>
<outputDirectory>./${project.build.finalName}/lib</outputDirectory>
<scope>runtime</scope>
<unpackOptions>
<excludes>
<exclude>**/excludedpackage/**<exclude>
</excludes>
</unpackOptions>
</dependencySet>
</dependencySets>
</assembly>
我的问题是,在不使用unpack(即保持所有依赖项打包为jar)的情况下,我如何从依赖项jar中排除包?理想情况下,我想要一个可以使用组装插件完成的解决方案--如果这不可能的话,什么是实现我想要做的最简单的方法?
我不认为你可以在罐子被拆开和过滤后重新包装。您可以在Maven Assembly插件Jira中提交一个增强请求。
一个(复杂的)解决方法是使用maven-dependency-plugin
解包希望从中排除的项目依赖项,然后使用maven-jar-plugin
再次jar类,排除新jar中的包,最后为该特定依赖项的maven-assembly-plugin
声明一个
元素。
示例配置为
<plugin>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.10</version>
<executions>
<execution>
<id>unpack</id>
<goals>
<goal>unpack-dependencies</goal>
</goals>
<phase>prepare-package</phase>
<configuration>
<includeArtifactIds><!-- include here the dependency you want to exclude something from --></includeArtifactIds>
<outputDirectory>${project.build.directory}/unpack/temp</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<version>2.6</version>
<executions>
<execution>
<id>repack</id>
<goals>
<goal>jar</goal>
</goals>
<phase>prepare-package</phase>
<configuration>
<classesDirectory>${project.build.directory}/unpack/temp</classesDirectory>
<excludes>
<exclude>**/excludedpackage/**</exclude>
</excludes>
<outputDirectory>${project.build.directory}/unpack</outputDirectory>
<finalName>wonderful-library-repackaged</finalName> <!-- give a proper name here -->
</configuration>
</execution>
</executions>
</plugin>
那么在您的程序集配置中,您将有:
<files>
<file>
<source>${project.build.directory}/unpack/wonderful-library-repackaged.jar</source>
<outputDirectory>/${project.build.finalName}/lib</outputDirectory>
</file>
</files>
问题内容: 我有一个项目,需要以下Maven jibx插件: 在jibx插件pom内部,有一个xpp3依赖关系,我想从我的项目构建过程中排除它(由于某种原因,我无法在私有存储库中拥有它)。 有没有一种方法可以配置我的pom.xml(而不是插件pom)来排除该依赖关系? 编辑:我试图从插件pom中删除xpp3依赖项,并且该项目可以成功构建,所以我知道依赖项不是强制性的。 问题答案: 这是一个示例,其
例如,我有依赖性:
我想使用第三方供应商的jar。但是在这个jar中,我有Java包的旧版本我需要找到一些方法将包从主项目中排除。像这样的东西: 你能推荐一些解决方案吗?
问题内容: 我有一个项目,该项目依赖于由供应商控制的工件。该工件包含一些我依赖的类,其中一些类较旧并且会引起问题。有没有办法让Maven自动扩展jar,删除类并将它们重新打包为依赖项?我会举一个例子。 所以- 我需要使用在项目网站,但我需要使用从神器。我无法修改Supplier:artifact或us:dependency。 有任何想法吗?! 问题答案: 从版本2.0.9开始,maven保留了类路
我想使用nd4j-cuda-10.2中的项目。它有两个操作系统(Linux和Windows)的jar文件。在使用windows系统时,如何将jar从Linux中排除,反之亦然?。 [Maven Repository][1][1]:https://repo1.maven.org/maven2/org/nd4j/nd4j-cuda-10.2/1.0.0-beta7/ 由于jar文件的重量。我想排除对每
我需要从maven Dependence插件中排除单个工件:复制依赖项。 在文档上:https://maven.apache.org/plugins/maven-dependency-plugin/copy-dependencies-mojo.html我发现了两个有趣的选择: ExcludeArtifactId,它将排除与给定工件id匹配的所有工件(组id上的通配符) ExcludeGroupId