例如,我有2个Maven项目.一个是"项目 - 父母".另一个是"项目孩子".显然,"项目 - 孩子"是"项目 - 父母"的子项目.
"project-parent"具有log4j的依赖关系.但是我想把它从"项目孩子"中排除.有办法吗?
你可能会说我应该将log4j从"project-parent"移动到"project-child".这是完全正确的.但我的假设是我不能修改"项目 - 父母"的POM.
提前致谢.
Mat*_*ell 13
我不知道实际排除依赖关系的方法,但您可以将其从目标分发中排除,但这有点像黑客攻击.您需要将依赖项的范围更改为可以在最终分发中排除的内容.
所以,说我父母对junit 4.8的依赖,在我的pom中你说:
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.8</version>
<scope>provided</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)
所以我们正在改变提供的范围.有关其工作原理的说明,请参阅我在注释处理期间对NoClassDefFoundError:org/junit/AfterClass的回答.不幸的是,这不会影响构建,但是当您复制最终分发的依赖项时,可以使用excludeScope配置元素不将依赖项复制到最终分发中:
<plugin>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy-libs</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/lib</outputDirectory>
<excludeScope>provided</excludeScope>
</configuration>
</execution>
Run Code Online (Sandbox Code Playgroud)
Adr*_*hum 12
我认为在Maven2中没有办法实现这一点,因为这就是POM继承的用途.但是我可以想到一个技巧:
假设您有权将工件上载到内部工件存储库.您可以创建一个空JAR,将其部署为log4j:log4j,具有明显异常的版本(例如log4j:log4j:9999).在project-child中添加这样的依赖项.然后它将覆盖parent的依赖关系取决于实际上为空的JAR.
| 归档时间: |
|
| 查看次数: |
40314 次 |
| 最近记录: |