下面是一張模塊與子模塊的目錄圖
?kingdee\kingdee-biz\pom.xml依賴本地lib/k3cloud-webapi-sdk8.0.4.jar,配置如下:
<!-- 金蝶云 api SDK包 -->
<dependency>
<groupId>com.kingdee</groupId>
<artifactId>k3cloud-webapi</artifactId>
<version>sdk8.0.4</version>
<scope>system</scope>
<systemPath>${project.parent.basedir}/lib/k3cloud-webapi-sdk8.0.4.jar</systemPath>
</dependency>
pom.xml報錯提示:
'dependencies.dependency.systemPath' for kingdee:kingdee:jar must specify an absolute path but is ${project.parent.basedir}/lib/k3cloud-webapi-sdk8.0.4.jar
意思是說:systemPath?只認(rèn)識絕對路徑,不認(rèn)識相對路徑。project.parent.basedir相對的是當(dāng)前pom.xml上級。
現(xiàn)在如果把${project.parent.basedir}?換成${project.basedir},且/lib移到與當(dāng)前pom.xml同一級的目錄。錯誤不見了。
為什么會這樣,如果我們打開kingdee-biz.iml就會發(fā)現(xiàn)兩種變量在配置上的差別
1、使用${project.parent.basedir}變量時,有兩種情況發(fā)生。
?情況一、如下圖變量沒有被轉(zhuǎn)換,路徑是無法識別的路徑。會出現(xiàn)文中標(biāo)題提示的錯誤
?情況二、變量已經(jīng)轉(zhuǎn)換為"$MODULE_DIR$/.."。相對當(dāng)前目錄通過../找上一級目錄,也就是用的是相對路徑。雖然pom.xml不會提示文中標(biāo)題的錯誤,但當(dāng)執(zhí)行mvn命令時會出現(xiàn)“Process terminated”錯誤。
?2、使用${project.basedir}時,url是使用的是絕對目錄。pom.xml不但不會提示文中標(biāo)題的錯誤,且執(zhí)行mvn命令時也不會出現(xiàn)“Process terminated”錯誤。
?總結(jié):如果要使用systemPath?引用本地jar包,有三種方法:
1、寫死絕對路徑,如D://lib/k3cloud-webapi-sdk8.0.4.jar。
2、在settings.xml中配置變量,配置好絕對路徑,然后使用這個變量。
3、如文中把lib/k3cloud-webapi-sdk8.0.4.jar與當(dāng)前pom.xml放在同一級,然后用${project.basedir}/lib/k3cloud-webapi-sdk8.0.4.jar。
方法1、2的好處是jar包可以集中存放,不好的是換個環(huán)境可能需要換路徑。文章來源:http://www.zghlxwxcb.cn/news/detail-480614.html
方法3的好處是可以用相對路徑,不受環(huán)境變化影響。不好的是jar包不能集中存放。文章來源地址http://www.zghlxwxcb.cn/news/detail-480614.html
到了這里,關(guān)于‘dependencies.dependency.systemPath‘ for *:*:jar must specify an absolute path but is的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!