背景
前几天不是对接了专有钉钉,具体细节可看:对接专有钉钉(浙政钉)登陆步骤
然后我把专有钉钉的包,放到了我基础包中
具体细节可看:
项目中父模块调用子模块出现 Invalid bound statement (not found)问题
我是这样引用的
<dependency>
<groupId>com.alibaba.zwdd</groupId>
<artifactId>zwdd-sdk</artifactId>
<version>1.2.0</version>
<scope>system</scope>
<systemPath>${project.basedir}/lib/zwdd-sdk-java-1.2.0.jar</systemPath>
</dependency>
今天在saas项目中引入了基础包之后打包就出现了问题了,出现
‘dependencies.dependency.systemPath’ for xx must specify an absolute path but is xx
分析
运行命令:
mvn -X dependency:tree>tree.txt
打开tree.txt 搜索[ERROR]
很明显是 p r o j e c t . b a s e d i r 和 s y s t e m 作用域的问题, {project.basedir}和system作用域的问题, project.basedir和system作用域的问题,{project.basedir}是基础包项目的路径,打包的时候很明显取不到。以及 system 作用域的依赖问题, system 作用域不会从Maven 仓库中解析,而是依赖于本地文件系统中的 JAR 包。
解决方案
那我们直接去掉system作用域,将第三方包打进本地仓库,然后依赖本地仓库就可以了, 具体怎么做的尼?
执行:
mvn install:install-file -Dfile=path/to/zwdd-sdk-java-1.2.0.jar -DgroupId=com.alibaba.zwdd -DartifactId=zwdd-sdk -Dversion=1.2.0 -Dpackaging=jar
-Dfile= 包路径,最好写绝对路径,可直接复制
DgroupId=对应maven中的groupId
-DartifactId=对应maven中的artifactId
-Dversion=对应maven中的version
然后我们在这样引用
<dependency>
<groupId>com.alibaba.zwdd</groupId>
<artifactId>zwdd-sdk</artifactId>
<version>1.2.0</version>
</dependency>
再次在saas项目中打包就可以正常打包了。