0

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

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

我正在使用具有不同“执行”块的 maven-jar-plugin 将 jar 文件从每个项目的相关目录/类中制作出来。我对 Maven 很陌生,很难定义正确的“包含”和“排除”目录。

这是我的课程所在的结构:

\目标\类\com

\target\classes\com\microsoft

\target\classes\com\google

\目标\类\组织

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

\target\classes\com\microsoft

\目标\类\组织

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

\target\classes\com\google

以下是“构建”块的一部分,它具有“执行”块来创建这些 jar。第一个 jar 称为:msn-prod,另一个称为:google。如您所见,我尝试了所有不同的组合来创建这些 jar,但都没有奏效——它们作为被注释的部分存在于以下构建块中。

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

<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>
4

1 回答 1

2

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

于 2012-05-30T06:24:30.403 回答