2012-06-20 22 views
2

我有一個Maven組裝腳本,它複製資源來構建我們的應用程序。我需要將單獨的外部項目的一些war文件複製到輸出中的/ webapps目錄中。似乎無法找到執行它的魔法命令。如何獲得Maven Assembly插件來複制神器?

我試着用<include com.mygroup:mywarfile>向程序集添加一個dependencySet。如果在編譯或運行時的作用域中將'mywarfile'添加爲項目中的war依賴項,這將起作用。不幸的是,我的項目產生了一場戰爭,而maven-war-plugin包含了外部mywarfile作爲疊加層,這是我不想要的。

如果我的對外戰爭的依賴範圍設置爲提供或測試,裝配失敗,並警告:

[警告]下面的模式從來沒有在這件神器包含過濾器觸發: 「com.mygroup :mywarfile'

我想要做的就是讓程序集從我的本地倉庫複製一個工件到組件輸出。如何做到這一點,而不會搞亂項目的其他部分?

回答

2

maven-assembly-plugin不適用於複製。複製依賴關係的更好方法是可以複製依賴關係等的maven-dependency-plugin等等。如果您正在討論部署到Tomcat等方面,則應該深入研究carg2-maven-plugintomcat-maven-plugin,這似乎更適合該任務。

+1

恩,複製是maven assembly插件的* primary *目的。 FileSet,DependencySets及其餘部分僅用於將部分應用程序複製到最終版本中。必須使用一個單獨的maven-dependency-plugin否定了程序集插件的用途。另外,如果您的程序集輸出爲zip文件,則它不起作用。 – ccleve

+0

對不起,但根據名稱,maven-assembly-plugin會將工件和/或文件組合到一個存檔中,但不打算將工件從一個位置複製到另一個位置。如果您想從構建內(多模塊或存儲庫)複製構件,則依賴項插件就是您所需要的。 – khmarbaise

+0

@ user237815:程序集插件只能用於項目中已有的文件。它不打算添加不可用的內容,所以恕我直言,依賴插件是一種方式。 – tom

0

我還沒有試過這個,但是你可以嘗試使用配置的exclude功能maven war plugin來排除依賴war文件的內容被包含在你的war項目中。 Overlay文檔中的修改片段,

... 
    <build> 
    <plugins> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-war-plugin</artifactId> 
     <version>2.2</version> 
     <configuration> 
      <overlays> 
      <overlay> 
       <groupId>com.example.projects</groupId> 
       <artifactId>warToBeExcluded</artifactId> 
       <excludes> 
       <exclude>*</exclude> 
       </excludes> 
      </overlay> 
      </overlays> 
     </configuration> 
     </plugin> 
    </plugins> 
    </build> 
... 
+0

這確實有效,在我發佈問題之前,這是我們的解決方法。儘管如此,這有點破綻。 – ccleve