
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]:
-
localRepository
:指定清理过_remote.repositories
文件的路径 -
offline
:使用离线模式
3指定配置文件执行编译
以在 /maven-offline/build/
路径下执行命令为例:
├── demo-project
├── repository
└── settings.xml
mvn -s settings.xml -f demo-project/pom.xml clean package
Part4参考资料
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