首页 > 其他分享 >离线环境解决maven编译外网下包问题

离线环境解决maven编译外网下包问题

时间:2023-01-30 19:34:17浏览次数:45  
标签:remote 下包 localRepo repositories 离线 jar maven

引言

近日一直忙着做持续集成,处于安全性考虑,需要在离线环境运行。项目依托Jenkins做Java/Python/Vue等工程的镜像构建,其中Java工程基本基于Maven,在外网条件下通过IDEA或者mvn命令均可正常打包,原本思路是将本地的repo全量拷贝到服务器,再执行同样的mvn命令,但实际出发jenkins构建任务时,经常build失败。哪怕在maven的setting.xml中硬性设置<offline>true</offline>,依旧不起作用。

问题原因探索

maven在执行构建过程中,会按照localRepo->privateRepo->mirrorRepo->centralRepo依次去解决包缺失问题,并最终下载到localRepo。因为是全量拷贝windows的localRepo,里边存在了大量的_remote.repositories文件,此文件直接影响了部分jar的同步问题,导致哪怕localRepo明明已经有了jar包,还是固执地去上级仓库拉包。然而我们没有环境配置nexus和mirror,故只能向centralRepo找寻jar包,导致build失败。

行之有效的解决办法

1.在不设置nexus的情况下,直接伪造一个mirror源,指向服务器localRepo,需要在maven的setting.xml文件中,新增一个mirror,格式如下。

  <mirrors>
    <!-- mirror
     | Specifies a repository mirror site to use instead of a given repository. The repository that
     | this mirror serves has an ID that matches the mirrorOf element of this mirror. IDs are used
     | for inheritance and direct lookup purposes, and must be unique across the set of mirrors.
     |
    <mirror>
      <id>mirrorId</id>
      <mirrorOf>repositoryId</mirrorOf>
      <name>Human Readable Name for this Mirror.</name>
      <url>http://my.repository.com/repo/path</url>
    </mirror>
     -->
    <mirror>
      <id>central</id>
      <mirrorOf>*</mirrorOf>
      <name>central</name>
      <url>file:///data/maven_repo/Mvn363</url>
    </mirror>
		 
  </mirrors>

 

2.删除localRepo下所有的_remote.repositories文件

# 查询所有的_remote.repositories
find . -name _remote.repositories
# 删除当前目录下所有的_remote.repositories
find . -name _remote.repositories | xargs -I {} rm -fr {}

 

3.再次触发jenkins构建任务,无误。

标签:remote,下包,localRepo,repositories,离线,jar,maven
From: https://www.cnblogs.com/fushichenmu/p/17077037.html

相关文章

  • Maven工程报错org.codehaus.plexus.component.repository.exception.ComponentLookupE
    本人电脑环境:jdk1.8,idea2021,maven3.6.3问题:今天调整maven项目的三个配置参数后,idea报了下面的错误org.codehaus.plexus.component.repository.exception.ComponentLoo......
  • centos7.9离线安装mysql5.7.40(本文使用initialize-insecure安装方法)
    centos7.9离线安装mysql5.7.40(本文使用initialize-insecure安装方法)一、卸载CentOS7系统自带mariadb#查看系统自带的Mariadb[root@NIWAY-190~]#rpm-qa|grepmariadbm......
  • zabbix-agent 离线安装5.0 centos7
    Centos7离线安装zabbix客户端环境:Centos7.71.下载离线安装包下载地址:http://repo.zabbix.com/zabbix在上述打开的页面中,依次选择版本号,环境,OS版本以及OS处理器型号。这......
  • maven依赖管理,生命周期,插件
    依赖配置依赖指当前项目运行所需的jar,一个项目可以设置多个依赖,在pom.xml中格式如下<!--设置当前项目所依赖的所有jar--><dependencies><!--设置具体的......
  • Maven —— 生命周期
    Maven——生命周期https://hernsong.blog.csdn.net/article/details/91039311?spm=1001.2101.3001.6650.4&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefa......
  • maven的各个生命周期
    maven的各个生命周期https://yumbo.blog.csdn.net/article/details/104085429?spm=1001.2101.3001.6650.8&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefaul......
  • 离线部署yum依赖
    利用本地源解决在无网环境部署应用需要解决的问题:应用需要哪些软件包?如何把应用依赖的软件包制作成一个精简的本地源?如何使用本地源?第一个问题使用yum-utils解决,它......
  • 离线yum安装k8s(直接yum安装k8s)快速部署
    问题:如何在没有离线环境上服务器yum安装k8s环境?环境:准备一台互联网的服务器+离线的服务器写的比较简便。。。。。。。。1.互联网服务操作添加阿里云YUM的软件源cat>......
  • maven介绍
    maven简介​ Maven是项目管理工具,将项目开发和管理过程抽象成一个项目对象模型(POM),主要服务于基于Java平台的项目构建,依赖管理和项目信息管理。为了解决传统过程中的jar......
  • idea构建maven+springmvc+tomcat的demo工程(小亮yuu)
    转载自:https://www.cnblogs.com/xiaoliangyuu/p/15488138.html==============需要环境jdk、maven、tomcat、idea,此次demo版本如下:jdk8maven3.5tomcat8.5idea2020......