2016-07-15 32 views
0

我的maven項目包含兩個src包和幾個依賴項。 我把它打包成一場戰爭,並在WEB-INF/libs中包含了像libs這樣的依賴關係。Maven war plugin archiveClasses但排除一個包

現在我需要在一個jar中包含從com.path.to.package.a所有已編譯的項目類,但是我還需要排除com.path.to.package.b中包含的編譯類。

我知道我可以使用<archiveClasses>選項,如:

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

這使正確的jar項目庫中,但顯然它讓所有的.class文件。

我試圖用<packagingExcludes><warSourceExcludes>等選項執行排除,但沒有運氣。

是否有任何選項可以與<archiveClasses>配對使用,以排除我需要的jar形式?

+0

其中位於包com.path.to.package.b的源類? – davidxxx

+0

爲什麼你想排除課堂打包?沒有意義?你想排除什麼樣的課程? – khmarbaise

+0

您是否嘗試過使用 com.path.to.package.b根據標記?然而,將不同模塊 –

回答

0

由於接縫有沒有像我一直在尋找,我結束了快速和骯髒以下一個解決方案:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-antrun-plugin</artifactId> 
    <version>1.7</version> 
    <executions> 
     <execution> 
      <id>delete-unused-classes</id> 
      <phase>test</phase> 
      <goals> 
       <goal>run</goal> 
      </goals> 
      <configuration> 
       <tasks> 
        <delete includeemptydirs="true"> 
         <fileset dir="${project.build.outputDirectory}/com/path/to/pachage/a" /> 
        </delete> 
       </tasks> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 

做這樣他們之前的不需要的類被刪除從<archiveClasses>打包並且它們不出現在jar庫中。

相關問題