如何解决Cannot access central in offline mode?

如何解决Cannot access central in offline mode?

  • 问题
    • 第一种解决方式:
    • 第二种解决方式
    • 第三种解决方式

问题

关于这个问题是我这两天遇到的一个比较头疼的问题,我花费了一个下午才解决的
在使用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

如何解决Cannot access central in offline mode?_第1张图片
但是实际上我已经通过其他方式获得了这个jar包:
如何解决Cannot access central in offline mode?_第2张图片

第一种解决方式:

无意间尝试打开“_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包的信息。

  • 第3行:pom文件>私服ID名称
  • 第4行:jar文件>私服ID名称
  • 第5、6行:从另一个私服下载的记录
    然而,我的settings.xml连不上>conjars这个私服。因此,将其改为central:
#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=

如何解决Cannot access central in offline mode?_第3张图片

第二种解决方式

在自己的一个项目中用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文件,那么为什么编译通不过呢?
如何解决Cannot access central in offline mode?_第4张图片
我的Maven的pom.xml已经把clojars-repo的repo删除掉了,是不是因为这个原因导致Maven的编译通不过呢?抱着尝试的心里,笔者删除了这个文件,再一次运行mvn clean verify, Awesome!!!! 通过了。

所以有的时候遇到问题一定换一种思维方式,多角度的尝试和分析,往往会有意想不到的收货。

第三种解决方式

手动在项目的resources中创建一个lib目录,并将本地的jar放置在其中,(如果没有该文件夹,可以自行创建一个)。
如何解决Cannot access central in offline mode?_第5张图片
如何解决Cannot access central in offline mode?_第6张图片

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包也打进去的一些小问题,比较粗糙和简洁,不足之处,请多批评。不懂的地方可以提出来共同讨论

你可能感兴趣的:(开发语言,java,maven,intellij-idea)