我使用Maven构建我的MyProject
。还有其他几个项目被用作“MyProject
”的图书馆项目。
在MyProject
的 pom.xml 中,我将这些库项目定义为MyProject
的依赖项。其中一个Library项目名为“OneLibProject
”:
<dependency>
<groupId>com.xxx.OneLibProject</groupId>
<artifactId>OneLibProject</artifactId>
<version>1.0.0-SNAPSHOT</version>
<type>jar</type>
</dependency>
<dependency>
...
</dependency>
在MyProject
根路径下,运行后:maven clean install
会生成 MyProject.jar 。但是, MyProject.jar 中的库项目(依赖项)中定义的类不包括在中。
每个图书馆项目也有自己的pom&amp;可以生成自己的jar。
现在,我想要做的是我希望配置“MyProject
”中的 pom.xml ,以便生成的 MyProject.jar file包含OneLibProject
的类和MyProject
的类。 不包括其他图书馆项目类。
如何实现这一目标?
答案 0 :(得分:1)
您可以使用maven-assembly-plugin并配置哪些依赖项包含在程序集描述符的dependencySet部分的jar中。
假设你有项目y和z。将此插件添加到y的pom
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.4</version>
<configuration>
<descriptor>src/main/assembly/assembly.xml</descriptor>
</configuration>
</plugin>
将此assembly.xml放在scr / main / assembly
中<assembly
xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
<id>jar-with-dependencies</id>
<formats>
<format>jar</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<dependencySets>
<dependencySet>
<outputDirectory>/</outputDirectory>
<useProjectArtifact>true</useProjectArtifact>
<unpack>true</unpack>
<scope>runtime</scope>
<includes>
<include>test:y</include>
<include>test:z</include>
</includes>
</dependencySet>
</dependencySets>
</assembly>
在z
中运行mvn install
运行mvn包程序集:y中的程序集
如果一切正确,您将在目标文件夹中获得y-0.0.1-SNAPSHOT-jar-with-dependencies.jar。它只包含y和x类。