前言
一、打包jar包pom依赖关系过于复杂的解决方法
我的做法比较暴力直接把后端的所有模块合并到一个模块下,初始模块是一个外部模块大Blog用maven管理内部三个模块,然后admin和blog依赖于framework,
这个时候我们直接把admin和framework一起归并到admin中,具体的就是把他们的代码和依赖都放入到
下面的blog并删除这两个模块。
合并之后如上图所示,并且上面的blog的pom中基本上只改了依赖关系,下面的pom基本上只改了module的包含关系,然后此时仍然是可以编译通过的,虽然耦合度增大,但是对于我们的启动类的查找会方便很多,这也是不得已而为之的办法。
二、启动类的确定
1.启动类所在模块(上图blog)
要在pom中加上这段代码,方便于打包
代码如下(示例):
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.3.4.RELEASE</version>
<configuration>
<!-- 指定该Main-Class的启动类 -->
<mainClass>com.xxx.xxx</mainClass>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal><!--可以把依赖的包都打包到生成的Jar包中-->
</goals>
</execution>
</executions>
</plugin>
</plugins>
这里有一点是需要注意的:就是pom打包如果打包多模块,用maven的package生成的只是一个模块的,但是他会把外部的模块也打包进去。
2.找到打包得到的package
找到target中打包好的jar包
java -jar xxx.jar
直接运行即可,如果没有主类的话就查看一下主类的位置和相互的依赖关系。
总结
多模块打包一定要清晰各个模块之间的关系,不然暴力重构要比理清关系要简单得多。