我有一个相当大的java maven项目,有超过200个模块,它是确定的,因为是。我试图合并所有这些模块到一个单一的jar。
在某些情况下,在新项目中只声明一个新的maven依赖项(例如my-library-5.2.4-SNAPSHOT-bundle.jar或类似的东西)会非常方便。
我尝试过使用maven assembly-plugin。我可以创建新的jar文件,jar包含所有模块jar,如果我安装它,它会正确地进入本地.m2文件夹。Jar可以在其他项目中声明为依赖项。
但问题是我不能导入我的java类库中的任何模块,导入时无法识别这些模块。
我已经将这个构建部分添加到我的根pom.xml中:
<build>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
<id>make-bundle</id>
<goals>
<goal>single</goal>
</goals>
<phase>package</phase>
<configuration>
<descriptors>
<descriptor>assembly.xml</descriptor>
</descriptors>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
我的assembly.xml如下所示:
<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">
<id>bundle</id>
<formats>
<format>jar</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<moduleSets>
<moduleSet>
<useAllReactorProjects>true</useAllReactorProjects>
<binaries>
<outputDirectory>modules</outputDirectory>
<unpack>false</unpack>
</binaries>
</moduleSet>
</moduleSets>
</assembly>
1条答案
按热度按时间jk9hmnmh1#
Maven实践:
父模块是你定义所有子模块共同使用的依赖项和插件的地方。它不应该有自己的输出。
您应该使用“distribution”子模块来聚合所有其他模块工件,而不是尝试在父模块中这样做。
比如说--
一般为所有项目创建一个简单的父pom文件项目(打包“pom”)
现在,对于您希望使用它的所有项目,只需包括此部分: