Maven依赖于zip工件

时间:2013-12-11 08:02:56

标签: java maven

我有一个项目需要依赖于另一个项目生成的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','提供'等),我似乎找不到与我的用例相匹配的范围。我做错了吗?

2 个答案:

答案 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