maven打包子模块
Could not find artifactXXXXXXXXX:pom:2.6 in public (http://maven.aliyun.com/nexus/content/groups/public/)日志模块依赖于公共模块,公共模块不依赖于其它子模块。打包公共模块正常,但在打包日志模块的时候报错。此处是因为找不到父工程。解决办法有两个:1.父类直接打包直接点击父类的install,《EL
Could not find artifact XXXXXXXXX:pom:2.6 in public (http://maven.aliyun.com/nexus/content/groups/public/)
日志模块依赖于公共模块,公共模块不依赖于其它子模块。打包公共模块正常,但在打包日志模块的时候报错。此处是因为找不到父工程。
解决办法有两个:
1.父类直接打包
直接点击父类的install,《EL-ADMIN后台管理》为父模块。
注意:父工程module中的子模块顺序为打包顺序,将需要依赖的模块放在前面,后面的模块就可以引用前面的模块。
2.打包子模块,子模块使用父模块依赖,直接打包某一个子模块,maven会向上查找父模块,此时父模块不存在,报错,可以把父工程中的所有子模块注释掉,然后打包父模块,此时maven仓库中就会有父模块了,然后再打包子模块,成功。
注意:直接打包子模块存在问题,每一个子模块中都会引入父模块中的全部依赖。比如说打包common模块,打包的目标jar文件中包含父工程中的所有依赖,打包logging模块也会包含父工程的所有依赖,如果logging模块引用了common模块,父类工程中的依赖便会重复引用,出现错误。解决方案:一:不在父工程中引入依赖,只定义版本号。二:使用exclude标签,将common中的父类依赖排除掉。但在实际使用中发现并没有真正引入打包的jar包中并没有引入依赖jar包,而是保存的pom.xml文件,也就不会出现上面的问题。
如果需要打包成可执行文件,引入依赖的jar包,此项目是springboot项目,在打包的子模块中引入spring-boot-maven-plugin插件,spring-boot-maven-plugin 插件以Maven的方式为Springboot应用提供支持,能够将Springboot应用打包为可执行的jar或war文件,进行相应部署后即可启动Springboot应用。
<!-- 打包 -->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<!-- 跳过单元测试 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>
</plugins>
</build>
然后再次打包:
总结:
maven打包不会引入jar包,打包的模块中依赖以pom.xml方式记录。
使用spring-boot-maven-plugin插件,可以打包springboot项目。
其他:
1.存在两个root
解决方法,
2.mvnw和mvnw.cmd文件 引用于https://blog.csdn.net/qq_42840183/article/details/83057862
mvnw–全名是maven wrapper
它的原理是在maven-wrapper.properties文件中记录你要使用的maven版本,当用户执行mvnw clean 命令时,发现当前用户的maven版本和期望的版本不一致,那么就下载期望的版本,然后用期望的版本来执行mvn命令,比如刚才的mvn clean。
mvn文件夹–存放maven-wrapper.properties和相关jar包
mvn.cmd–执行mvnw命令的cmd入口
不控制maven版本,这些都可以delete
注意:子模块不要使用springboot项目,使用maven项目,不然可能导致打包后有多个启动主类,程序无法运行。
更多推荐
所有评论(0)