Maven:从依赖项中排除主要工件本身

时间:2013-10-09 11:50:54

标签: maven pom.xml

向POM.xml添加依赖项时,是否可以排除主要工件本身。 换句话说,我想为我的pom添加一个依赖项,我想只下载它的依赖项,而不是主jar。

这就是我想要做的事情:

 <dependency>
    <groupId>net.sourceforge.htmlunit</groupId>
    <artifactId>htmlunit</artifactId>
    <version>2.12</version>
    <exclusions>
        <exclusion>
            <groupId>net.sourceforge.htmlunit</groupId>
            <artifactId>htmlunit</artifactId>
        </exclusion>
     </exclusions> 
</dependency>

我知道这可能看起来很奇怪,但我实际上在我的源文件夹中有一个htmlunit项目的修改版本,我真正想要的只是它所依赖的库而不必将它们全部添加到我的pom中。

我尝试了以上操作,似乎htmlunit-2.12.jar已添加到我的项目中,这正是我想要避免的。

我可以做些什么来解决这个问题?

2 个答案:

答案 0 :(得分:2)

你可以简单地定义一个依赖于htmlunit的pom而不是jar。因此,您将按如下方式定义依赖关系:

<dependencies>
    <dependency>
        <groupId>net.sourceforge.htmlunit</groupId>
        <artifactId>htmlunit</artifactId>
        <version>2.12</version>
        <type>pom</type>
    </dependency>
    <!-- other project dependencies go here -->
</dependencies>

然后,您将传递项目中包含的pom中定义的所有依赖项,但不会包含htmlunit jar。

答案 1 :(得分:0)

通过阅读你的问题我可以说你想添加另一个项目jar的pom文件中提到的依赖项,不包括那个jar。

你可以通过这种方式实现这一点,这里我一般显示代码根据你的要求改变各自的属性值

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>other.pom.group.id</groupId>
            <artifactId>other-pom-artifact-id</artifactId>
            <version>SNAPSHOT</version>
            <scope>import</scope>
            <type>pom</type>
        </dependency>   
    </dependencies>
</dependencyManagement>

在maven网站上有关于此依赖关系管理的更好描述,请参阅此Importing dependencyDependency Management