这里注重讲的是,当一个公用模块存在于父项目中,打包遇到的一系列问题
首先,springboot项目打包上传给docker时,如果此项目引用了其它的springboot项目,则是不允许的,所以需要将公用模块改为spring项目,而非springboot项目
改变方法:首先pom文件中注释掉它继承的父类,同样在父类pom文件中注释掉声明的这个子类,
其次需要给公用模块的所有依赖写出版本,因为只有springboot项目不需要版本,
最后,将build全部注释,因为里面可能定义了此项目的打包方式为springboot,所以直接全部注释掉,至此,pom改变完毕
刷新maven,如果报错,则是因为idea默认公用模块为父模块的子模块,解决方式是:进入父模块所在的文件夹,将里面的公用模块移动到别的文件夹,进入idea,然后再进入文件夹将公用模块移动至父模块,此时,公用模块和父模块的父子关系已经斩断,并且公用模块已经不再是springboot项目
但是,当解决了上面的问题后,遇到了一个新问题:此时idea并不认为公用模块为一个模块,而是一个文件夹,在maven刷新那里有个➕加号,点击加号将此公用模块添加就ok了
接下来就可以进行打包公用模块操作,但是你可能会遇到一个问题,它会报一个版本过低的错,这是由于maven默认使用的是jdk5或者更低的版本,需要在此模块的pom文件中声明版本,声明方式如下:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
以上代表声明了jdk版本为1.8或者更高,问题得到解决
如果还报一个编译异常的错,这时候就是很简单的一个问题,通常出现在启动类里面,即使你注释了springboot启动类注解,但是main方法的写法仍然是不被普通项目所认可的,你可以试着运行它,大概率报错,此时将main方法中内容清空,随便输出一句话,大概率运行成功,此时再去打包就可以了
总结:代码报错总是千奇百怪的,不一定我的这些解答能帮到你,因为可能我们遇到的报错只有一点点区别,但是解决方式却大不相同,其实我对好多报错也很懵,看不懂英文,但是只要逻辑清晰,总会解决