2012-04-23 39 views
4

我使用Maven程序集插件來構建我們產品的WAR(以前由Ant完成)。由於Apache Ant有很多剩菜,因此有一個具體要求可以使構建過程變得更加簡單:將特定的依賴關係子文件夾(例如jar或war資源)複製到特定的目標子文件夾。Maven程序集:從依賴的特定子文件夾中複製

到目前爲止,我瞭解到程序集描述符允許指定<outputDirectory>,但是有沒有機會指定<sourceDirectory>?例如,我想將此規則應用於單個WAR或JAR類型依賴項。

考慮裝配描述符片段的這個例子中(不是100%準確):

<dependencySet> 
     <unpack>true</unpack> 
     <scope>runtime</scope> 
     <useProjectArtifact>false</useProjectArtifact> 
     <includes> 
      <include>my-specific-dependency:war</include> 
     </includes> 
     <outputDirectory>WEB-INF/myresources</outputDirectory> 
    </dependencySet> 

我想說的是,我要到某個文件夾從我的特定的依賴複製:戰爭WEB-INF /爲MyResources 。

編輯注:我知道,這不是因爲我們不應該知道什麼是神器裏面一個非常正確的要求,正確的方法是宣佈以提取出完整的神器到目標目錄(純聲明方法)。

回答

3

您應該能夠使用Maven Dependency插件做到這一點,與解壓目標: http://maven.apache.org/plugins/maven-dependency-plugin/unpack-mojo.html

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-dependency-plugin</artifactId> 
    <executions> 
    <execution> 
     <id>unpack-database-scripts</id> 
     <phase>compile</phase> 
     <goals> 
     <goal>unpack</goal> 
     </goals> 
     <configuration> 
      <artifactItems> 
      <artifactItem> 
      <groupId>myGroup</groupId> 
      <artifactId>myArtifact</artifactId> 
      <version>1.0</version> 
      <type>war</type> 
      <overWrite>true</overWrite> 
      <includes>...</includes> 
      <outputDirectory>…</outputDirectory> 
      </artifactItem> 
     </artifactItems> 
     </configuration> 
    </execution> 
    </executions> 
</plugin> 
+0

謝謝,您的評論幫助了很多。現在我希望改變使用maven-war-plugin和maven-dependency-plugin構建最終WAR的方式。我可以有多個元素引用相同的arifact,但有不同的? – 2012-04-23 11:32:51

+0

我想你可以嘗試一下。如果這不起作用,您仍然可以使用多個*執行*。 – nwinkler 2012-04-23 11:35:57

+0

說實話,我提供的答案直接回答了原始問題。但你清楚地展示瞭如何用簡單而正確的解決方案來實現我的目標。 – 2012-04-23 15:46:33

0

原來,程序集描述符(自2.2版beta-1以來)提供了unpackOptions指令,包括<dependencySet>。正是我需要的。

2

首先我電子書籍您檢查maven-war-plugin做的工作與替代maven-assembly-plugin。此外,請檢查documentation關於包含解壓縮等選項的dependencySet。將模塊的包裝更改爲war,並使其符合maven約定,並且不使用Maven作爲ant ...目前看起來像它。

+0

你可能是對的我應該嘗試maven-war-plugin,我會的。結合@nwinkler提出的建議,我希望我可以達到同樣的靈活性,正如我期望通過使用程序集插件實現的一樣。 – 2012-04-23 11:30:55

相關問題