关于这个问题是我这两天遇到的一个比较头疼的问题,我花费了一个下午才解决的
在使用maven打包执行package的过程中,在下载依赖包的这一步报错:
Failure to find org.pentaho:pentaho-aggdesigner-algorithm:pom:5.1.5-jhyde in https://repository.cloudera.com/artifactory/cloudera-repos/ was cached in the local repository, resolution will not be reattempted until the update interval of cloudera has elapsed or updates are forced
但是实际上我已经通过其他方式获得了这个jar包:
无意间尝试打开“_remote.repositories”文件如下:
#NOTE: This is a Maven Resolver internal implementation file, its format can be changed without prior notice.
#Wed Jan 08 11:35:56 CST 2020
pentaho-aggdesigner-algorithm-5.1.5-jhyde.pom>conjars=
pentaho-aggdesigner-algorithm-5.1.5-jhyde.jar>conjars=
对比正常可以使用的包中的该文件:
#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.
#Fri Aug 10 10:04:28 CST 2018
spring-boot-starter-web-1.5.9.RELEASE.pom>central=
spring-boot-starter-web-1.5.9.RELEASE.jar>central=
spring-boot-starter-web-1.5.9.RELEASE.pom>alimaven=
spring-boot-starter-web-1.5.9.RELEASE.jar>alimaven=
这里的central、alimaven表示setting.xml中配置的私服id,只有存在该资源的镜像或私服才会将私服或镜像的id写入到_remote.repositories中。
这个文件存储的是每次从私服或者中央仓库下载的jar包的信息。
#NOTE: This is a Maven Resolver internal implementation file, its format can be changed without prior notice.
#Wed Jan 08 11:35:56 CST 2020
pentaho-aggdesigner-algorithm-5.1.5-jhyde.pom>central=
pentaho-aggdesigner-algorithm-5.1.5-jhyde.jar>central=
在自己的一个项目中用Maven进行编译管理自己的一个项目,因为是没有网络的环境的,所以笔者把Maven设置成了Offline模式,也就是直接使用本机Maven库里面的jar,而不是通过Internet从网上Maven仓库中心获取,其Maven的Setting.xml的文件设置如下:
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
https://maven.apache.org/xsd/settings-1.0.0.xsd">
<localRepository>${user.home}/.m2/repository</localRepository>
<interactiveMode>true</interactiveMode>
<usePluginRegistry>false</usePluginRegistry>
<offline>true</offline>
</settings>
后面我发现自己的${user.home}/.m2/repository 目录下的的确确也存在这个jar文件,那么为什么编译通不过呢?
我的Maven的pom.xml已经把clojars-repo的repo删除掉了,是不是因为这个原因导致Maven的编译通不过呢?抱着尝试的心里,笔者删除了这个文件,再一次运行mvn clean verify, Awesome!!!! 通过了。
所以有的时候遇到问题一定换一种思维方式,多角度的尝试和分析,往往会有意想不到的收货。
手动在项目的resources中创建一个lib目录,并将本地的jar放置在其中,(如果没有该文件夹,可以自行创建一个)。
2.将jar包拉到 lib 文件夹中,此时Maven Project 中此jar包下有红线,说面没有从本地仓库中找到此包,要在pom中给它指定此包的路径,如果想系统可以使用此包,注意红线圈出的:(作者本人因为没有指定system,依赖包还是会有红线)
<dependency>
<groupId>com.example</groupId> <!-- 自定义group id -->
<artifactId>local-jar-name</artifactId> <!-- 本地jar包名称 -->
<version>1.0.0</version> <!-- 版本号,可以根据实际情况修改 -->
<scope>system</scope> <!-- 表示该依赖是本地系统范围内的 -->
<systemPath>${project.basedir}/lib/local-jar-name.jar</systemPath> <!-- 指定本地jar包路径 -->
</dependency>
指定了scope之后并且加上jar路径即可,保存并关闭pom.xml文件。
以上是我简单的总结一下关于在idea中 sprinngboot 如何导入外部jar包,和打包时如何将lib下的jar包也打进去的一些小问题,比较粗糙和简洁,不足之处,请多批评。不懂的地方可以提出来共同讨论