Maven + Nexus 本地部署与上传完整指南

一份 完整、正确的小白指南 Markdown 文档,包括:

  • 安装 JDK
  • 配置 Maven
  • 创建 Maven 项目和 Java 代码
  • 打包
  • 上传 SNAPSHOT 和 Release 到本地 Nexus

Maven + Nexus 本地部署与上传完整指南

1️⃣ 安装 JDK

确保系统安装 JDK,而不是 JRE,因为 Maven 编译需要 javac。

CentOS / RHEL

sudo yum install -y java-11-openjdk-devel

Ubuntu / Debian

sudo apt update
sudo apt install -y openjdk-11-jdk

配置环境变量

# 假设安装路径是 /usr/lib/jvm/java-11-openjdk
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk
export PATH=$JAVA_HOME/bin:$PATH

# 验证
java -version
javac -version

2️⃣ 配置 Maven 账号

编辑用户级 settings.xml(路径:~/.m2/settings.xml):

<settings xmlns="http://maven.apache.org/SETTINGS/1.2.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.2.0 https://maven.apache.org/xsd/settings-1.2.0.xsd">

  <servers>
    <server>
      <id>nexus-releases</id>
      <username>admin</username>
      <password>admin</password>
    </server>
    <server>
      <id>nexus-snapshots</id>
      <username>admin</username>
      <password>admin</password>
    </server>
  </servers>

</settings>

✅ 注意:

  • <servers> 标签是必须的
  • <id> 必须和 pom.xml <distributionManagement> 中的 <repository> / <snapshotRepository> 一致

3️⃣ 创建 Maven 项目

mkdir -p ~/demo-app/src/main/java/com/example
cd ~/demo-app

3.1 创建 pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
         http://maven.apache.org/xsd/maven-4.0.0.xsd">

    <modelVersion>4.0.0</modelVersion>

    <groupId>com.example</groupId>
    <artifactId>demo-app</artifactId>
    <version>1.0.0-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>Demo App</name>

    <properties>
        <maven.compiler.source>11</maven.compiler.source>
        <maven.compiler.target>11</maven.compiler.target>
    </properties>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>3.2.2</version>
                <configuration>
                    <archive>
                        <manifest>
                            <mainClass>com.example.App</mainClass>
                        </manifest>
                    </archive>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <distributionManagement>
        <repository>
            <id>nexus-releases</id>
            <url>http://127.0.0.1:8081/repository/maven-releases/</url>
        </repository>
        <snapshotRepository>
            <id>nexus-snapshots</id>
            <url>http://127.0.0.1:8081/repository/maven-snapshots/</url>
        </snapshotRepository>
    </distributionManagement>

</project>

3.2 创建 App.java

package com.example;

public class App {
    public static void main(String[] args) {
        System.out.println("Hello Maven Nexus!");
    }
}

保存路径:

src/main/java/com/example/App.java

4️⃣ 编译打包

cd ~/demo-app
mvn clean package
  • 成功后生成:
target/demo-app-1.0.0-SNAPSHOT.jar

5️⃣ 上传到 Nexus

5.1 上传 SNAPSHOT 版本

确保 pom.xml <version> 是:

<version>1.0.0-SNAPSHOT</version>

执行:

mvn deploy
  • Maven 会自动上传到 http://127.0.0.1:8081/repository/maven-snapshots/
  • 成功输出示例:
[INFO] Uploading to nexus-snapshots: http://127.0.0.1:8081/repository/maven-snapshots/com/example/demo-app/1.0.0-SNAPSHOT/demo-app-1.0.0-SNAPSHOT.jar
[INFO] BUILD SUCCESS

5.2 上传 Release 版本

  1. 修改版本号去掉 -SNAPSHOT:
<version>1.0.0</version>
  1. 执行:
mvn clean deploy
  • Maven 会上传到 release 仓库:
http://127.0.0.1:8081/repository/maven-releases/com/example/demo-app/1.0.0/demo-app-1.0.0.jar

注意:release 仓库不允许覆盖已存在的版本,如果 1.0.0 已上传过,需要修改为 1.0.1 等新版本。


6️⃣ 在 Nexus 查看

  1. 打开浏览器访问: http://127.0.0.1:8081
  2. 登录 admin(密码在 sonatype-work/nexus3/admin.password)
  3. 菜单选择 Repositories → Browse
  4. 找到仓库:
  • maven-snapshots → 查看 SNAPSHOT 文件
  • maven-releases → 查看 Release 文件
  1. 路径示例:
com/example/demo-app/1.0.0-SNAPSHOT/
com/example/demo-app/1.0.0/

✅ 小结

  • Maven 编译必须有 JDK
  • Maven deploy 需要 settings.xml 配置账号,并且 <id> 与 <distributionManagement> 对应
  • SNAPSHOT 和 Release 分开管理,上传不同仓库
  • Nexus 上可以通过浏览器直接查看上传的 jar

这份文档就是 完整的小白流程,从环境准备、Maven 项目创建、打包,到上传到本地 Nexus 仓库。


posted @ 2025-10-16 18:02  broadviews  阅读(182)  评论(0)    收藏  举报