2013-09-24 42 views
0

我有這樣一個多模塊Maven項目:Maven - 如何自定義依賴關係的構建?

project 
    project-core 
    project-webapp 

project-coreproject-webapp的依賴。在構建project-core時,我排除了最後一個jar中的一些元素。當我使用maven(通過m2eclipse)構建和部署整個項目時,一切都很好。

但是,如果我使用WTP構建和部署,則會跳過資源篩選。

到目前爲止,我發現的唯一工作是禁用m2eclipse的工作空間分辨率。這樣,WTP就會用maven構建的jar來構建最終的戰爭。此解決方法的主要缺點是每次修改project-core源代碼時,我都必須安裝,更新項目。

我該如何強制WTP過濾掉project-core的資源?

項目/項目核心/ pom.xml的

<?xml version="1.0"?> 
<project 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" 
    xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <modelVersion>4.0.0</modelVersion> 
    <parent> 
     <artifactId>project</artifactId> 
     <groupId>com.company.project</groupId> 
     <version>1.0.0</version> 
    </parent> 

    <artifactId>project-core</artifactId> 
    <name>project-core</name> 
    <version>${version.project}</version> 
    <packaging>jar</packaging> 

    <properties> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    </properties> 

    <dependencies> 
       // (huge) dependencies list ... 
    </dependencies> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-jar-plugin</artifactId> 
       <version>2.3.1</version> 
       <configuration> 
        <excludes> 
         <exclude>file.properties</exclude> 
         <exclude>DIR/file.xml</exclude> 
        </excludes> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 

    <repositories> 
       // repositories ... 
    </repositories> 
</project> 

編輯:

但是,如果我構建和部署WTP,資源過濾被跳過。

其實我沒有在階段上做過濾。這些資源僅在建造罐子時被過濾。感謝@Samuel EUSTACHI,我現在過濾資源時,他們被複制到target文件夾。在這裏,我是如何做到的:

項目/項目核心/ pom.xml的

 <build> 
      <!-- 
        I removed completely the plugins node and 
        replace it with the resources node 
      --> 

      <resources> 
       <resource> 
       <directory>src/main/resources</directory> 
        <excludes> 
         <exclude>file.properties</exclude> 
         <exclude>DIR/file.xml</exclude> 
        </excludes> 
       </resource> 
      </resources> 
     </build> 
+0

你能顯示完整的pom文件嗎? – khmarbaise

+0

@khmarbaise查看我的更新 – Stephan

回答

1

我的猜測是,WTP不執行實際的罐子身材,但可用的資源,而工作(可能在目標)。

從jar中排除一些文件是不常見的。您可以從前面的階段(流程資源?)排除這些文件,或者如果您只需要這些文件進行單元測試,請將它們移動到測試中。

這真的取決於你爲什麼決定從jar中排除它們(你必須有一個很好的理由,但它會幫助你知道爲什麼)。

+0

我試圖通過eclipse從'target'目錄中排除文件(位於src/main/resources),但沒有運氣。這些文件仍然到達目標目錄。我可以將這些文件移出或src/main/resources,但是我很不喜歡這個解決方案,因爲這些文件是真正的資源,並且不喜歡在src/main/resources中。實際上這些文件是生產環境的示例配置文件。他們已經在src/test/resources中有對應的特殊值,僅用於測試目的。 – Stephan

+0

如果你的文件是真正的資源,但不是任何構建或過程的一部分(即出於文檔目的),你可以這樣排除它們:http://maven.apache.org/plugins/maven-resources-plugin/examples/ include-exclude.html –

+1

在我的項目中,這些生產樣本也不在src/main/resources下。我只在那裏放置構建過程的一部分,或在運行時需要的文件 –