Maven: изключване на самия основен артефакт от зависимост

Когато добавяте зависимост към POM.xml, възможно ли е да изключите самия основен артефакт. С други думи, искам да добавя зависимост към моя pom и искам да изтегля само нейните зависимости, а не основния буркан.

Ето какво искам да направя:

 <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 е добавен към моя проект, което е точно това, което искам да избегна.

Мога ли да направя нещо, за да заобиколя това?


person azpublic    schedule 09.10.2013    source източник


Отговори (2)


Можете просто да дефинирате зависимост към pom на htmlunit вместо към буркана. Така че бихте дефинирали зависимостта, както следва:

<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 няма да бъде включен.

person DB5    schedule 09.10.2013

Прочитайки въпроса ви, мога да кажа, че искате да добавите зависимости, споменати в pom файла на другия буркан на проекта, с изключение на този буркан.

Можете да постигнете това по този начин. Тук показвам кода като цяло Променете стойността на съответния атрибут според вашите изисквания

<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 има много по-добро описание на това управление на зависимостите, вижте това Импортиране на зависимост и Управление на зависимостите

person Satyam Koyani    schedule 09.10.2013
comment
Това само добавя зависимостите към раздела dependencyManagement. Те не са изрично зависимост от проекта - т.е. няма да бъдат включени в класовата пътека на проекта, когато са изградени. Тогава пак ще трябва да изброите всички необходими зависимости в раздела <dependencies> на pom. - person DB5; 09.10.2013