2016-12-09 4 views
0

я объявляю в родительском ПMaven зависимости с типом = П

<dependencyManagement> 
     <dependency> 
      <groupId>org.apache.commons</groupId> 
      <artifactId>commons-lang3</artifactId> 
      <version>${commons-lang3.version}</version> 
      <scope>compile</scope> 
     </dependency> 
</dependencyManagement> 

Кроме того, ребенок П использование

<dependencies> 
     <dependency> 
      <groupId>org.apache.commons</groupId> 
      <artifactId>commons-lang3</artifactId> 
     </dependency> 
</dependencies> 

Все отлично работает? но когда я использую такую ​​зависимость с типом = П

<dependencyManagement> 
     <dependencies> 
      <dependency> 
       <groupId>org.jboss.spec</groupId> 
       <artifactId>jboss-javaee-7.0</artifactId> 
       <version>${jboss-javaee-7.0.version}</version> 
       <type>pom</type> 
       <scope>import</scope> 
      </dependency> 
</dependencyManagement> 

У меня есть ошибка

[ERROR] The build could not read 1 project -> [Help 1] 
[ERROR] 
[ERROR] The project by.services:by.utils:1.0.2 (D:\Work\V2_Change_Maven_Structure\by.utils\pom.xml) has 1 error 
[ERROR]  'dependencies.dependency.version' for org.jboss.spec:jboss-javaee-7.0:jar is missing. @ line 18, column 21 
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. 
[ERROR] Re-run Maven using the -X switch to enable full debug logging. 

Как объявить зависимость в dependencyManagement с типом = п $ {Jboss-JavaEE-7.0.version} объявленных Если я несу JBoss-JavaEE-7.0 в корне, а затем запускает

ответ

1

осветления здесь является то, что, когда вы не определяете <type> на вашем </dependency> в </dependencyManagement> он defults к jar

<dependencyManagement> 
    <dependency> 
     <groupId>org.apache.commons</groupId> 
     <artifactId>commons-lang3</artifactId> 
     <version>${commons-lang3.version}</version> 
     <scope>compile</scope> 
     <type>jar<type> <!--default value--> 
    </dependency> 
</dependencyManagement> 

и, следовательно, module использования эта банка при ее использовании как

<dependency> 
    <groupId>org.apache.commons</groupId> 
    <artifactId>commons-lang3</artifactId> 
</dependency> 

type зависимости. По умолчанию это jar. Хотя обычно представляет собой расширение имени файла зависимости, это не всегда так. Тип может быть сопоставлен с другим расширением и классификатором. Тип часто соответствует используемой упаковке, хотя это также не всегда так. Некоторые примеры jar, war, ejb-client и test-jar Новые типы могут быть определены с помощью плагинов, которые устанавливают extensions в true, так что это не полный список.


Но дальше, когда вы явно объявить родительский POM иметь тип, как

<dependencyManagement> 
    <dependencies> 
     <dependency> 
      <groupId>org.jboss.spec</groupId> 
      <artifactId>jboss-javaee-7.0</artifactId> 
      <version>${jboss-javaee-7.0.version}</version> 
      <type>pom</type><!--override the default value--> 
      <scope>import</scope> 
     </dependency> 
</dependencyManagement> 

ребенка модуль теперь может либо наследовать зависимость с тем же <type>, как

<dependency> 
    <groupId>org.jboss.spec</groupId> 
    <artifactId>jboss-javaee-7.0</artifactId> 
    <type>pom</type><!--inherited--> 
</dependency> 

ИЛИ если вы хотите использовать банку проекта, который отличается от <type>, вы можете явно указать ионная зависимость как:

<dependency> 
    <groupId>org.jboss.spec</groupId> 
    <artifactId>jboss-javaee-7.0</artifactId> 
    <version>${jboss-javaee-7.0.version}</version> 
    <type>jar</type> <!--different from parent--> 
    <scope>import</scope> 
</dependency> 
2

вы пытаетесь импортировать jboss-javaee-7.0 банки в вашем детском проекте, там нет такого банка, это типа П, который вы уже импортирования в вашем годовом аренда.

Вам необходимо импортировать зависимости от jboss-javaee-7.0 в ваш дочерний проект, что-то вроде этого.

<dependency> 
    <groupId>org.jboss.spec.javax.ws.rs</groupId> 
    <artifactId>jboss-jaxrs-api_2.0_spec</artifactId> 
</dependency> 

Вы можете получить более подробную информацию о importing dependencies

Смежные вопросы