我有一个项目需要依赖于另一个项目生成的ZIP文件。那个“其他项目”不在我的控制之下。正确构建项目需要ZIP文件。执行我的项目不需要它。我需要Maven为我下载ZIP文件。
我目前在ZIP工件上创建一个依赖项,如下所示:
<dependency>
<groupId>org.foo</groupId>
<artifactId>zeus</artifactId>
<version>1.1</version>
<type>zip</type>
<scope>test</scope>
</dependency>
我的问题是范围。如果我使用除了test
以外的任何东西,它会带来很多来自“其他项目”的传递依赖,这会破坏我自己的项目。使用test
作为范围实际上可以完成工作,但它在我的IDE中显示为测试依赖项。所以我觉得我做错了什么。这不是测试依赖!
我查看了可用的Maven范围('compile','提供'等),我似乎找不到与我的用例相匹配的范围。我做错了吗?
答案 0 :(得分:0)
您必须将所有传递依赖项声明为排除项:
<dependency>
<groupId>org.foo</groupId>
<artifactId>zeus</artifactId>
<version>1.1</version>
<type>zip</type>
<scope>compile</scope>
<exclusions>
<exclusion>
<groupId>org.foo</groupId>
<artifactId>transitive-dep-1</artifactId>
</exclusion>
<exclusion>
<groupId>org.foo</groupId>
<artifactId>transitive-dep-2</artifactId>
</exclusion>
<!-- add all transitive deps. -->
</exclusions>
</dependency>
答案 1 :(得分:0)
您可以使用通配符排除所有传递依赖项:
<dependency>
<groupId>org.foo</groupId>
<artifactId>zeus</artifactId>
<version>1.1</version>
<type>zip</type>
<scope>compile</scope>
<exclusions>
<exclusion>
<groupId>*</groupId>
<artifactId>*</artifactId>
</exclusion>
</exclusions>
</dependency>
(来源Exclude all transitive dependencies of a single dependency)