2015-02-23 84 views
1

我有多模塊項目。依賴關係如下:Maven如何獲得artificactId的依賴關係?

<dependencies>    
    <dependency> 
     <groupId>com.gwr</groupId> 
     <artifactId>gwr-commons</artifactId> 
     <version>0.0.1-SNAPSHOT</version> 
    </dependency> 
    <dependency> 
     <groupId>com.gwr</groupId> 
     <artifactId>gwr-places-module</artifactId> 
     <version>0.0.1-SNAPSHOT</version> 
    </dependency> 
    <dependency> 
     <groupId>com.gwr</groupId> 
     <artifactId>gwr-devices-module</artifactId> 
     <version>0.0.1-SNAPSHOT</version> 
    </dependency> 
    <dependency> 
     <groupId>com.gwr</groupId> 
     <artifactId>gwr-events-module</artifactId> 
     <version>0.0.1-SNAPSHOT</version> 
    </dependency> 
    <dependency> 
     <groupId>com.gwr</groupId> 
     <artifactId>gwr-controls-module</artifactId> 
     <version>0.0.1-SNAPSHOT</version> 
    </dependency> 
    <dependency> 
     <groupId>com.gwr</groupId> 
     <artifactId>gwr-logs-module</artifactId> 
     <version>0.0.1-SNAPSHOT</version> 
    </dependency> 
</dependencies> 

而且,在每個模塊/依賴我有一個zip文件命名爲*****的 「的src/main /資源」 - persistence.zip(EGC:\ GWR-日誌-module \ src \ main \ resources \ logs-persistence.zip)其中*****是模塊名稱。我想複製這個每個模塊的zip文件在其他目錄下讓我們說c:\ users \ user \ project。我已經定義了資源插件如下:

<plugin> 
    <artifactId>maven-resources-plugin</artifactId> 
    <executions> 
     <execution> 
      <id>copy-presubscriptionfiles</id> 
      <phase>validate</phase> 
      <goals> 
       <goal>copy-resources</goal> 
      </goals> 
      <configuration> 
       <outputDirectory>${user.home}/${dasmo.storage}/</outputDirectory> 
       <overwrite>true</overwrite> 
       <resources> 
        <resource> 
         <directory>${basedir}/../gwr-logs-module/src/main/resources</directory> 
         <includes> 
          <include>*.zip</include> 
         </includes> 
        </resource> 
        <resource> 
         <directory>${basedir}/../gwr-devices-module/src/main/resources</directory> 
         <includes> 
          <include>*.zip</include> 
         </includes> 
        </resource> 
        <resource> 
         <directory>${basedir}/../gwr-controls-module/src/main/resources</directory> 
         <includes> 
          <include>*.zip</include> 
         </includes> 
        </resource> 
        <resource> 
         <directory>${basedir}/../gwr-events-module/src/main/resources</directory> 
         <includes> 
          <include>*.zip</include> 
         </includes> 
        </resource> 
       </resources> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 

正如你看到的,在資源節中,我有硬編碼每個模塊的名稱。我怎樣才能避免這種情況?我們不能使用每個依賴項的「artifactId」嗎?如果是,如何使用它?或者有沒有其他的方式來完成這項工作?

非常感謝。 問候, Yeshwant

+0

我不明白你的問題。 http://books.sonatype.com/mvnex-book/reference/multimodule.html – 2015-02-23 09:28:49

+0

Dovy,你能告訴我你在我的問題中沒有理解的部分:請參閱我寫的代碼。我必須一個接一個地寫下所有模塊的名稱,我希望在進行資源複製時避免使用這些模塊的名稱: – 2015-02-23 09:43:11

+0

我的問題是如何從我的資源插件中的「 gwr-logs-module」中獲取artifactId的值。 gwr-logs-module取自定義的依賴關係。 – 2015-02-23 09:45:38

回答

0

您可以在多模塊POM的<plugin>部分降低到以下幾點:

<plugin> 
    <artifactId>maven-resources-plugin</artifactId> 
    <executions> 
    <execution> 
     <id>copy-presubscriptionfiles</id> 
     <!-- Note: this phase is more appropriate than 'validate' --> 
     <phase>process-resources</phase> 
     <goals> 
     <goal>copy-resources</goal> 
     </goals> 
     <configuration> 
     <outputDirectory>${user.home}/${dasmo.storage}</outputDirectory> 
     <overwrite>true</overwrite> 
     <resources> 
      <resource> 
      <directory>${project.basedir}/src/main/resources</directory> 
      <!- or likewise 
      <directory>${project.projectDirectory}/src/main/resources</directory> 
      --> 
      <includes> 
       <include>*.zip</include> 
      </includes> 
      </resource> 
     </resources> 
     </configuration> 
    </execution> 
    </executions> 
</plugin> 

如果你在任何一個子模塊的POM的聲明你的多模塊項目作爲<parent>這將由它們繼承(請參閱Introduction to the POM, Project Inheritance),並在每個子模塊構建中執行。

注:basedir是贊成project.basedir.

棄用進一步的閱讀可見Maven: The Complete Reference, Multi-module vs. Inheritance