2011-04-11 90 views
2

當我在maven項目中擁有類型'war'的依賴關係時,它會自動使用覆蓋將它合併到我正在構建的項目中。在maven中禁用戰爭覆蓋

我想禁用重疊。

爲了使開發過程更簡單,我希望在爲本地Tomcat構建時使用符合maven-junction-plugin的鏈接,並且僅在構建測試和prod服務器時使用符號鏈接。

對於我如何工作戰爭依賴關係的任何其他建議,我需要修改而不需要很長的構建週期,這也是值得歡迎的。

回答

1

在配置文件中配置覆蓋排除。要配置疊加看到: http://maven.apache.org/plugins/maven-war-plugin/overlays.html

該鏈接指定了如何讓Maven的戰爭插件排除特定的文件和文件夾。

我想實現的是根本沒有覆蓋,但覆蓋默認情況下發生。

到目前爲止,我發現的唯一解決方案是將戰爭依賴關係本身放入配置文件中,但我對此解決方案感到不滿意,因爲它嘗試了太多的解決方法。

2

您不能像maven-war-plugin:2.1.1那樣禁用疊加層集合,但是您可以從疊加層中排除文件。

排除所有疊加文件:

<dependentWarIncludes></dependentWarIncludes> 
<dependentWarExcludes>**</dependentWarExcludes> 

從一個特定的覆蓋排除所有文件:

<overlays> 
    <overlay> 
    <groupId>com.gentics</groupId> 
    <artifactId>portalnode-webapp</artifactId> 
    <excludes> 
     <exclude>**/*</exclude> 
    </excludes> 
    </overlay> 
</overlays> 

請注意,這不會降低所使用的覆蓋量。

0

在我的情況下,疊加發生是因爲我們有類型war的依賴關係。

我解決了我的問題,將所有這些依賴關係放在默認啓用的配置文件中。也許黑客,但它的作品。

<profile> 
    <id>overlay-active</id> 

    <build> 
    <plugins> 
     <plugin> 
     <artifactId>maven-war-plugin</artifactId> 
     <version>2.1.1</version> 
     <configuration> 
      <dependentWarExcludes>WEB-INF/lib/*,META-INF/**</dependentWarExcludes> 
     </configuration> 
     </plugin> 
    </plugins> 
    </build> 

    <dependencies> 
    <dependency> 
     <groupId>myGroup</groupId> 
     <artifactId>myWarDepency</artifactId> 
     <version>1.0-SNAPSHOT</version> 
     <type>war</type> 
    </dependency>