2012-03-20 80 views
2

我有一個相當具體的問題。 我創建了一個web應用程序,並希望有一個jar版本的Web戰爭額外的類。 沒問題,我這樣做是:Maven webapp - 從webapp派生的jar中排除java資源

<plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-war-plugin</artifactId> 
     <version>2.2</version> 
     <configuration> 
     <attachClasses>true</attachClasses> 
     </configuration> 
    </plugin> 

被同樣來自的src/main /資源的資源進入瓶子裏。但是由於這些資源只適用於這個Web應用程序,所以我不希望它們在jar中。我可以將它們移動到webapp src文件夾中,但是我需要對屬性文件進行過濾,所以它必須是一個資源文件夾,因此可以通過war/jar構建進行包含。

<resources> 
    <resource> 
    <directory>src/main/resources</directory> 
    <filtering>true</filtering> 
    </resource> 
</resources> 

我試圖通過配置的maven-JAR-插件將它們排除在外:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-jar-plugin</artifactId> 
    <version>2.4</version> 
    <configuration> 
     <excludes> 
     <exclude>**properties</exclude> 
     </excludes> 
    </configuration> 
    </plugin> 

工作正常通過燒杯奇異罐子構建:罐子,但不幸的是不是罐子構建由完成安裝階段。

有沒有辦法將這些配置應用到maven-war-plugin?

我知道我可以通過添加用於構建jar,在本地安裝並將其部署到遠程存儲庫的執行來擴展配置,但這有點搞砸了。

任何幫助,歡迎。

回答

2

執行此操作的一種方法是將Java源移至單獨的項目,然後將其作爲依賴項包含在WAR項目中。通過這種方式,您可以控制進入JAR文件的內容,並且可以將其他文件保留在WAR項目中,應用篩選等。

我發現將功能分離爲細粒度的項目通常是解決問題的最佳方法而不是用複雜的配置設置多個插件來做同樣的事情。如果需要複雜的設置,可能是錯誤的。儘量保持簡單:-)

+0

是的。已經想過了。我想限制我的項目數量,但這樣做很簡單。謝謝。 – 2012-03-21 12:40:20