Maven2: компиляция зависимостей не добавлена ​​в войну - PullRequest
0 голосов
/ 04 ноября 2010

У меня есть многомодульный проект, состоящий из нескольких jar-модулей и военного модуля. Когда я делаю mvn package, создается война, но одна зависимость (javax.mail) не включается в папку lib войны. Зависимость настроена на компиляцию - это главное пом. Война зависит не от mail.jar, а от module.jar. Когда я делаю mvn зависимость: дерево, эти три выглядят хорошо для меня. Запуск в режиме отладки также не показывает мне ничего плохого.

У кого-нибудь есть идея?

BB Питер

Редактировать: в главном ПОМ у меня есть

<dependency>
    <groupId>javax.mail</groupId>
    <artifactId>mail</artifactId>
    <version>1.4.1</version>
    <scope>compile</scope>
</dependency>

как управляемая зависимость. Модуль jar имеет зависимость следующим образом:

<dependency>
    <groupId>javax.mail</groupId>
    <artifactId>mail</artifactId>
</dependency>

Военный модуль не зависит от javax.mail.

Edit2:

Я переопределяю плагин войны в главной помпе следующим образом:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <version>2.1</version>
    <configuration>
        <warName>${war.name}</warName>
        <archive>
            <manifest>
            <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
            </manifest>
            <manifestEntries>
                <Implementation-Build>${buildNumber}</Implementation-Build>
            </manifestEntries>
        </archive>
    </configuration>
</plugin>

Ответы [ 2 ]

0 голосов
/ 05 ноября 2010

Ваш pom или master pom перекрывают плагин maven-war? Можно явно исключить артефакты из военного времени:

http://maven.apache.org/plugins/maven-war-plugin/war-mojo.html#packagingExcludes

Кроме того, http://maven.apache.org/plugins/maven-war-plugin/war-mojo.html#warSourceExcludes

... Я не могу вспомнить разницу между этими двумя исключениями, и это не имеет значения, если вы все равно не переопределите плагин войны.

0 голосов
/ 04 ноября 2010

Если зависимость javax.mail является зависимостью одного из ваших модулей, она должна быть включена.Однако, если он определен как optional зависимость, он нарушит механизм транзитивной зависимости.

Другими словами, если в вашем модуле у вас есть это определение:

<dependency>
    <groupId>javax.mail</groupId>
    <artifactId>mail</artifactId>
    <version>1.4.1</version>
    <optional>true</optional>
</dependency>

Если это так, просто удалите этот оператор <optional>true</optional>.

...