Maven игнорируя предоставленную область - PullRequest
4 голосов
/ 02 августа 2010

У меня есть EAR с несколькими зависимостями EJB.2 из них имеют предоставленную зависимость объема от фляги glassfish-embedded-all.Однако, когда я выполняю установку mvn на моем локальном компьютере или когда приложение создается через maven на hudson, в ухо всегда входит jar glassfish-embedded-all.

например, DataAccess-ejb с предоставленной зависимостью

<dependency>
     <groupId>org.glassfish.extras</groupId>
     <artifactId>glassfish-embedded-all</artifactId>
     <version>3.0</version>
     <scope>provided</scope>
</dependency>

Application-ear с зависимостью ejb

<dependency>
     <groupId>com.xxx.yyy</groupId>
     <artifactId>DataAccess-ejb</artifactId>
     <version>1.0-SNAPSHOT</version>
     <type>ejb</type>
</dependency>

Есть идеи, что я делаю неправильно или возможные предложения?

Приветствия,

Джеймс

Ответы [ 2 ]

4 голосов
/ 02 августа 2010

Попробуйте использовать mvn dependency:tree, чтобы проанализировать, что представляет собой артефакт, включая glassfish-embedded-all.jar, есть вероятность, что вы что-то упускаете.Maven не будет включать артефакт, который не объявлен как прямая зависимость и / или унаследован через транзитивную зависимость.

Вы также можете выполнить команду mvn dependency:analyze-only для дальнейшей очистки тех зависимостей, которые на самом деле вам не нужны.необходимо.

2 голосов
/ 02 августа 2010

Зависимости с provided областью действия не транзитивны , поэтому вы не получаете ее транзитивно, должно быть что-то еще.Запустите mvn dependency:tree из модуля ear.

Но на самом деле, мне действительно интересно, почему вы используете область provided, я думаю, что область test может быть более подходящей.И, кстати, я предлагаю использовать GF 3.0.1:

<dependency>
  <groupId>org.glassfish.extras</groupId>
  <artifactId>glassfish-embedded-all</artifactId>
  <version>3.0.1</version>
  <scope>test</scope>
</dependency>
...