我有一个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>
答案 0 :(得分:2)
您违反了每个模块一个构建工件的Maven最佳实践,因此遇到了麻烦。只需将其分解为多个项目,这将很容易。