2016-04-18 3 views
0

У меня есть два артефакта maven в моем личном репозитории, com.test.Parent и com.test.Child. Child зависит от Parent.Maven распаковать транзитные зависимости JAR в папку

Единственное, что я хочу сделать Maven, это загрузить банку Child и все, на что это зависит, а затем распаковать ее в каталог.

я был в состоянии собрать pom.xml, который загружает Child по телефону mvn clean dependency:unpack, однако для того, чтобы загрузить переходную зависимость, мне пришлось вручную включить его в pom.

Я хочу позвонить, например maven initialize, и мои необходимые зависимости будут загружены. То, что я сейчас это:

 <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-dependency-plugin</artifactId> 
      <executions> 
       <execution> 
        <id>unpack</id> 
        <phase>initialize</phase> 
        <goals> 
         <goal>unpack</goal> 
        </goals> 
         <configuration> 
         <artifactItems> 
          <artifactItem> 
           <groupId>com.test</groupId> 
           <artifactId>Child</artifactId> 
           <version>1.2.3</version> 
           <type>jar</type> 
           <includes>**</includes> 
           <excludes>META-INF/**</excludes> 
           <outputDirectory>somepath/sources</outputDirectory> 
          </artifactItem> 
         </artifactItems> 
        </configuration> 
       </execution> 
       <execution> 
        <id>unpack-dependencies</id> 
        <phase>initialize</phase> 
        <goals> 
         <goal>unpack-dependencies</goal> 
        </goals> 
        <configuration> 
         <excludeTransitive>false</excludeTransitive> 
         <includes>**</includes> 
         <outputDirectory>somepath/depend</outputDirectory> 
        </configuration> 
       </execution> 
      </executions> 
      <dependencies> 
       <dependency> 
        <groupId>com.test</groupId> 
        <artifactId>Child</artifactId> 
        <version>1.2.3</version> 
        <type>jar</type> 
       </dependency> 
      </dependencies> 
     </plugin> 
    </plugins> 

Однако, когда я бегу mvn clean initialize, только файлы Дочерние загружены и распакованы.

POM файл com.test.Child содержит следующее:

<groupId>com.test</groupId> 
<artifactId>Child</artifactId> 
<version>1.2.3</version> 

<dependencies> 
    <dependency> 
     <groupId>com.test</groupId> 
     <artifactId>Parent</artifactId> 
     <version>7.8.9</version> 
    </dependency> 
</dependencies> 

Видите ли вы какие-либо проблемы с установкой? Эндшпиль заключается в том, что разработчики могут просто загрузить один pom.xml, запустить mvn <something>, и все зависимости будут автоматически загружаться и распаковываться в определенную структуру.

Благодаря

Edit: Когда я удалить свой локальный репозиторий Maven и запустить этот POM, как Child и Parent загружаются. Таким образом, зависимость есть, но Parent не попал в ворота unpack-dependencies.

ответ

0

Я решил проблему, переместив блок <dependencies> за пределы <plugins>. Таким образом, окончательная структура POM является:

<project> 
    <build> 
    <plugins> 
     <plugin> 
     ... 
     </plugin> 
    </plugins> 
    </build> 

    <dependencies> 
     <dependency> 
      <groupId>com.test</groupId> 
      <artifactId>Child</artifactId> 
      <version>1.2.3</version> 
     </dependency> 
    </dependencies> 
</project> 

Но если кто-нибудь может мне объяснить, почему это помогает, что будут оценены.

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