以下是我的情况:
问题在于:
有谁知道如何解决这个问题?谢谢!
修改
将'web''重新定位'到'web-ng-framework'可能会更好吗?在ProjectA中,我可以包含对'web'的依赖,以便Maven看到它真正需要的是'web-ng-framework'。那会有用吗?
答案 0 :(得分:9)
在Project中包含ProjectS排除Web时。喜欢这个
<dependency>
<groupId>your.group</groupId>
<artifactId>projectA</artifactId>
<exclusions>
<exclusion>
<groupId>your.group</groupId>
<artifactId>web</artifactId>
</exclusion>
</exclusions>
</dependency>
答案 1 :(得分:1)
这个问题的经典解决方案是'版本99'黑客。
为此,请在根pom中使用以下内容:
<dependencyManagement>
<dependency>
<groupId>your.group</groupId>
<artifactId>web</artifactId>
<version>99.0-does-not-exist</version>
</dependency>
</dependencyManagement>
然后在您的存储库中放入一个空的web-99.0-does-not-exists.pom和web-99.0-does-not-exist.jar。 这可以确保从此根pom继承的每个项目都不再获取旧版本的web.jar。
答案 2 :(得分:0)
我建议您使用optional dependencies
这可以通过web
中的projectA
依赖性可选来实现。
<project>
<groupId>some.group</groupId>
<artifactId>projectA</artifactId>
...
<dependencies>
<!-- declare the dependency to be set as optional -->
<dependency>
<groupId>some.group</groupId>
<artifactId>web</artifactId>
<version>1.0</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
</dependencies>
</project>
当声明某些依赖于projectA
的其他项目时,不会包含web
依赖项。
<project>
<groupId>some.group</groupId>
<artifactId>projectB</artifactId>
...
<dependencies>
<dependency>
<groupId>some.group</groupId>
<artifactId>projectA</artifactId>
<version>1.0</version>
</dependency>
<dependency>
<groupId>some.group</groupId>
<artifactId>web-ng-framework</artifactId>
<version>1.0</version>
</dependency>
</dependencies>
</project>
现在projectB
只会依赖projectA
和web-ng-framework
,而不是web
。