使用spring-boot-maven-plugin构建项目出现的问题
项目依赖架构如图 xxl-job下有xxl-job-admin和xxl-job-core,俩个模块,但是xxl-job-admin依赖xxl-job-core模块。 在xxl-job-admin中配置了插件spring-boot-maven-plugin,想把xxl-job-admin项目通过命令 mvn clean package 打包成可运行的jar 通过依赖关系,首先要把xxl-job-core依赖包安装到maven的本地坐标仓库,执行了下面的操作。 存在俩个install ,Lifecycle里面的命令都会在执行时,把执行命令之前的生命周期都会执行一遍,比如:执行install,那么install之前的clean compile package等都会执行,且和用命令 mvn install 是等价的。(推荐使用,问题较少)。
Plugins是插件提供的mvn install:install 只会执行当前的生命周期的工作。
安装完xxl-job-core到maven仓库后,会发现一个问题,就是它没把它的父项目xxl-job也同步安装到仓库,这是一个严重的问题(可以通过手动配置的方式安装,xxl-job项目到mavne仓库)。然后在打包xxl-job-admin,的时候一直报错。 输入命令: mvn clean package 报错内容:
[ERROR] Failed to execute goal on project xxl-job-admin: Could not resolve dependencies for project com.xuxueli: xxl-job-admin:jar:2.1.2-SNAPSHOT: Failed to collect dependencies at com.xuxueli: xxl-job-core:jar:2.1.2-SNAPSHOT: Failed to read artifact descriptor for com.xuxueli:xxl-job-core:jar:2.1.2-SNAPSHOT: Could not find artifact com.xuxueli:xxl-job:pom:2.1.2-SNAPSHOT -> [Help 1]
意思就是说在收集依赖xxl-job-core的jar包信息时候,读取xxl-job-core的描述信息失败,没有找到坐标 xxl-job的项目。
这个错误引起的原因是:
当去maven库找xxl-job-core的jar包依赖的时候,发现它下面的的pom文件里面定义了它的父工程坐标就是xxl-job。然后去找这xxl-job项目的坐标,因为在install子项目xxl-job-core的时候,根本就没把父工程xxl-job也安装到maven仓库,此时当然找不到,然后就报错。 解决方案:手动把xxl-job的pom项目安装到maven仓库 1:根据它的坐标创建目录com/xuxueli/xxl-job/2.1.2-SNAPSHOT
<groupId>com.xuxueli</groupId> <artifactId>xxl-job</artifactId> <version>2.1.2-SNAPSHOT</version>
2:在把xxl-job对应的pom文件直接放在com/xuxueli/xxl-job/2.1.2-SNAPSHOT目录下,然后修改pom文件的名称 artifactId-version 后缀为pom 3:然后就可以操作成功了。
上面这种先打子包依赖,会存上面的问题,操作起来很麻烦,最简单的就是在xxl-job文件(总工程)下面直接执行mvn package ,下面所有的子项目都会根据配置的插件和打包类型,自动输出在指定的位置。
