【发布时间】:2016-12-21 21:24:55
【问题描述】:
所以我有一个项目,其中我从我的一个依赖项中排除了所有传递依赖项(oracle jdbc 固执地拉入了某人可能需要的所有 jar,这给我带来了问题通过替换我的 xml 解析器)。
我项目的程序集使用dependencySet 来拉入我需要的罐子,但这根本不尊重这些排除:应该排除的罐子出现在最终包中。
我知道我可以在程序集描述符本身中显式排除这些依赖项,但是必须在两个地方维护排除项是不可取的,如果你在 pom.xml 中有很多排除项,这会变得笨拙
最小复制示例:
所有文件
$ find
.
./src
./src/assembly
./src/assembly/tar.gz.xml
./pom.xml
pom.xml
<?xml version="1.0"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>bug.maven</groupId>
<artifactId>maven-bug</artifactId>
<version>1-SNAPSHOT</version>
<packaging>jar</packaging>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.6</version>
<configuration>
<descriptors>
<descriptor>src/assembly/tar.gz.xml</descriptor>
</descriptors>
<finalName>maven-bug-${project.version}</finalName>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>attached</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>commons-validator</groupId>
<artifactId>commons-validator</artifactId>
<version>1.4.1</version>
<exclusions>
<exclusion>
<groupId>*</groupId>
<artifactId>*</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
</project>
src/assembly/tar.gz.xml
<?xml version="1.0"?>
<assembly>
<id>pkg</id>
<formats>
<format>tar.gz</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<dependencySets>
<dependencySet>
<outputDirectory>/lib</outputDirectory>
<useProjectArtifact>false</useProjectArtifact>
</dependencySet>
</dependencySets>
</assembly>
重现
$ mvn clean package
$ tar tzf target/maven-bug-1-SNAPSHOT-pkg.tar.gz
lib/commons-validator-1.4.1.jar
lib/commons-beanutils-1.8.3.jar
lib/commons-logging-1.2.jar
lib/commons-digester-1.8.1.jar
lib/commons-collections-3.2.1.jar
预期结果
$ mvn clean package
$ tar tzf target/maven-bug-1-SNAPSHOT-pkg.tar.gz
lib/commons-validator-1.4.1.jar
据我所知,这只是一个没有 maven 文档的错误。有没有人知道我缺少或解决方案?
【问题讨论】:
-
程序集描述符中有一个简单的条目:`
false ` 应该可以解决您的问题。此外,如果您认为缺少一些文档,您应该打开Ticket in JIRA。啊顺便说一句。目标attached已弃用,不应使用。在 3.0.0 版本中(这是最新的版本,它已被删除)。请参阅docs page。
标签: maven build dependency-management maven-assembly-plugin