2012-05-29 62 views
0

我有一个maven项目,编译两个不同的项目,然后在这个目录中创建类:$ {project.build.directory}/classes如何在maven的一个构建块内创建不同的jar文件?

其中$ {project.build.directory}指向pom的目​​录。 xml存在。

我正在使用maven-jar-plugin和不同的“执行”块来为每个项目创建相关目录/类的jar文件。我对maven很陌生,难以定义正确的“include”和“exclude”目录。

这是我的类所在的结构:

\目标\类\ COM

\目标\类\ COM \微软

\目标\类\ COM \谷歌

\ target \ classes \ org

第一个jar文件需要从这些类中创建:

\目标\类\ COM \微软

\目标\类\组织

而第二个罐子需要这些类来创建:

\目标\类\ COM \谷歌

以下是有“执行”块来创建这些罐子的“构建”块的一部分。第一个jar名为:msn-prod,另一个名为:google。正如你所看到的,我尝试了所有不同的组合来创建这些罐子,但都没有工作 - 它们存在于下面的构建块中,作为评论的部分。

有人可以帮助我吗?任何帮助是极大的赞赏。

<plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-jar-plugin</artifactId> 
      <version>2.3.2</version> 
      <executions> 
       <execution> 
        <id>msn-prod</id> 
        <goals><goal>jar</goal></goals> 
        <phase>generate-resources</phase> 
        <configuration> 
         <classifier>msn-prod</classifier>  
         <!-- <classesDirectory>${project.build.directory}/classes/com/microsoft</classesDirectory> 
         <includes> 
          <include>**/*.class</include> 
         </includes> 
         <classesDirectory>${project.build.directory}/classes/org</classesDirectory> 
         <includes> 
          <include>**/*.class</include> 
         </includes>--> 
         <classesDirectory>${project.build.directory}/classes</classesDirectory> 
         <!-- <includes> 
          <include>**/*.class</include> 
         </includes>-->       
         <!-- <excludes> 
          <exclude>**/com/google/*</exclude> 
         </excludes>-->       
         <!-- <excludes> 
          <exclude>**/google/*.class</exclude> 
         </excludes>-->        
         <includes> 
          <include>**/com/microsoft/*.class</include> 
          <include>**/org/*.class</include> 
         </includes>    
         <finalName>${msn.prod}-${msn.api.version}</finalName>    
        </configuration> 
      </execution> 

      <execution> 
        <id>google</id> 
        <goals><goal>jar</goal></goals> 
        <phase>generate-resources</phase> 
        <configuration> 
         <classifier>google</classifier> 

         <!-- <classesDirectory>${project.build.directory}/classes</classesDirectory> 
         <includes> 
          <include>**/com/google/*.class</include> 
         </includes>-->       
         <classesDirectory>${project.build.directory}/classes/com/google</classesDirectory> 
         <includes> 
          <include>**/*.class</include> 
         </includes>          
         <finalName>${google}-${google.api.version}</finalName>    
        </configuration> 
      </execution> 

     </executions> 
    </plugin> 

回答

2

您违反了每个模块一个构建工件的Maven最佳实践,因此会遇到麻烦。把它分解成多个项目,这很容易。

+0

好点,我有同样的问题:) – trillions

相关问题