离线环境下 Maven 编译打包

离线环境下 Maven 编译打包

Part1背景

某些离线场景下我们可能无法连接 Maven 中央库或其他内网私服,又想通过 Maven 对源码进行编译打包。

本文给出了在离线环境下使用 Maven 编译打包的方案。

Part2前置条件

假设目标环境已经安装好了 JDK 和 Maven,并且将要编译的源码工程 demo-project 放置在了 /maven-offline/build 路径下。

Part3解决方案

1准备编译所需依赖

先在联网环境成功执行一次编译,保证使用的 Maven 本地缓存仓库(默认路径 ~/.m2/repository)中包含了编译所需的依赖。

将本地缓存仓库目录 repository 发送至离线环境 /maven-offline/build 路径下:

├── demo-project
└── repository

清理所有 _remote.repositories 文件

repository 目录中可能包含了很多 _remote.repositories 文件,需先将这些文件进行清理,否则还是会去中央库查找依赖。

  • Windows:
for /r %i in (_remote.repositories) do del %i
  • Linux:
find ./repository -name "_remote.repositories" -exec rm {} ;

2Maven 离线编译配置

/maven-offline/build/ 下新建 settings.xml,内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<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 http://maven.apache.org/xsd/settings-1.0.0.xsd">

    
    <localRepository>/maven-offline/build/repository</localRepository>
    <offline>true</offline>
    
</settings>

配置文件中只需设定两个 Simple Values[1]

  1. localRepository:指定清理过 _remote.repositories 文件的路径
  2. offline:使用离线模式

3指定配置文件执行编译

以在 /maven-offline/build/ 路径下执行命令为例:

├── demo-project
├── repository
└── settings.xml
mvn -s settings.xml -f demo-project/pom.xml clean package

Part4参考资料

[1]

Simple Values: https://maven.apache.org/settings.html#simple-values

[2]

maven离线环境配置(纯内网): https://blog.csdn.net/Remember_Z/article/details/119523295


原文始发于微信公众号(AmberBala):离线环境下 Maven 编译打包

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/194603.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!