美文网首页
离线环境下 Maven 编译打包

离线环境下 Maven 编译打包

作者: AlphaHinex | 来源:发表于2023-12-23 10:31 被阅读0次
cover

原文地址:https://alphahinex.github.io/2023/12/24/maven-offline-build/


description: "本文给出了在离线环境下使用 Maven 编译打包的方案。"
date: 2023.12.24 10:26
categories:
- Java
tags: [Java, Maven]
keywords: Maven, mvn, settings.xml, offline, localRepository, _remote.repositories


背景

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

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

前置条件

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

解决方案

准备编译所需依赖

先在联网环境成功执行一次编译,保证使用的 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 {} \;

Maven 离线编译配置

/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 文件的路径
  2. offline:使用离线模式

指定配置文件执行编译

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

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

参考资料

相关文章

网友评论

      本文标题:离线环境下 Maven 编译打包

      本文链接:https://www.haomeiwen.com/subject/paoqndtx.html