2016-07-15 124 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库中。