如何在maven中的一个构建块中创建不同的jar文件?

时间:2012-05-29 21:28:08

标签: maven jar pom.xml

我有一个maven项目,它编译两个不同的项目,然后在这个目录中创建类:$ {project.build.directory} / classes

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

我正在使用带有不同“执行”块的maven-jar-plugin来为每个项目生成相关目录/类的jar文件。我对maven很新,很难定义正确的“包含”和“排除”目录。

这是我的类所在的结构:

\目标\类\ COM

\目标\类\ COM \微软

\目标\类\ COM \谷歌

\目标\类\组织

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

\目标\类\ COM \微软

\目标\类\组织

第二个jar需要从这些类中创建:

\目标\类\ COM \谷歌

以下是“build”块的一部分,它具有“执行”块来创建这些jar。第一个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>

1 个答案:

答案 0 :(得分:2)

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