Nexus【应用 01】上传jar包到私有Maven仓库的两种方法:手动 Upload 和 mvn deploy 命令(配置+操作流程)

简介: Nexus【应用 01】上传jar包到私有Maven仓库的两种方法:手动 Upload 和 mvn deploy 命令(配置+操作流程)

以下内容均以Sonatype Nexus Repository Manager OSS 3.27.0-03版本进行说明。

1.上传

手动Uploadmvn deploy命令两种上传方式的应用场景不同,手动上传适用于工具类的jar包,比如项目需要引入的lib文件,这种可以选择手动上传。复杂的、有较多依赖的jar包则需要连同pom文件一起上传,此时需要使用mvn deploy

1.1 手动Upload

首先要登录Nexus,选择Upload,选择要上传的目标仓库,选择 File 填写 Group ID 等,最重要的是要点选Generate a POM file with these coordinates如下图:

正常上传后会有jarpom文件,这用1.0版本的截图:

如果不勾选,上传成功后没有pom相关文件:

没有pom文件编译时会报错:

Could not find artifact com.xxxx:gpss-nonetty:pom:3.0 in nexus (http://localhost:8081/repository/maven-public/)

勾选后生成的pom文件内容如下:

<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.xinan</groupId>
  <artifactId>gpss-nonetty</artifactId>
  <version>3.0</version>
  <packaging>jar</packaging>
</project>

如果上传错误,删除的方法如下:

1.2 mvn deploy 上传

命令上传时,由于未登录Nexus,也无法使用Nexus的Generate a POM file with these coordinates,所以命令上传要自己准备pom文件,配置如下:

<?xml version="1.0" encoding="UTF-8"?>
<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>
  <!-- 基础信息跟 Generate a POM file with these coordinates 生成的基本一致 -->
    <groupId>com.xinan</groupId>
    <artifactId>gpss-nonetty</artifactId>
    <version>1.0</version>
    <packaging>jar</packaging>
    <distributionManagement>
      <!-- 这里可以配置多个比如snapshots快照仓库 这里只配置一个 -->
        <repository>
            <id>releases</id>
            <name>maven的发布仓库id与setting.xml中在server节点id保持一致</name>
            <url>http://localhost:8081/repository/maven-releases/</url>
        </repository>
  </distributionManagement>
</project>

setting.xml 中的配置:

<servers>
  <!-- releases仓库的用户认证信息 -->
  <server>
      <id>releases</id>
      <username>admin</username>
      <password>admin123</password>
  </server>
  <!-- snapshots 快照认证信息 -->
  <server>
      <id>snapshots</id>
      <username>admin</username>
     <password>admin123</password>
  </server>
</servers>

方法1️⃣

使用idea上传当前项目,pom配置:

<?xml version="1.0" encoding="UTF-8"?>
<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.xinan</groupId>
    <artifactId>gpss-nonetty</artifactId>
    <version>1.0</version>
    <packaging>jar</packaging>
    <properties>
    <!-- 项目需要的配置 -->
    </properties>
    <dependencyManagement>
    <!-- 项目需要的依赖 -->
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>6</source>
                    <target>6</target>
                </configuration>
            </plugin>
        </plugins>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>
    <distributionManagement>
      <!-- 这里可以配置多个比如snapshots快照仓库 这里只配置一个 -->
        <repository>
            <id>releases</id>
            <name>maven的发布仓库id与setting.xml中在server节点id保持一致</name>
            <url>http://localhost:8081/repository/maven-releases/</url>
        </repository>
  </distributionManagement>
</project>

执行 depoly

方法2️⃣

使用ideaTerminal进行上传,由于idea已经配置了maven也就已经加载了setting.xml的配置,所以命令比较简单 此种方式可以上传任意Jar

# 不传递 DgroupId、DartifactId、Dversion、Dpackaging
mvn deploy:deploy-file 
-Dfile=jarFilePath\GPSS-1.0.jar 
-DpomFile=pomFilePath\pom.xml 
-Durl=http://localhost:8081/repository/maven-releases/ 
-DrepositoryId=releases
# 传递 DgroupId、DartifactId、Dversion、Dpackaging
mvn deploy:deploy-file 
-DgroupId=com.xxxx
-DartifactId=gpss-nonetty 
-Dversion=1.0 
-Dpackaging=jar 
-Dfile=jarFilePath\GPSS-1.0.jar 
-DpomFile=pomFilePath\pom.xml 
-Durl=http://localhost:8081/repository/maven-releases/ 
-DrepositoryId=releases
  • DgroupId、DartifactId、Dversion、Dpackaging:jar的基本信息,传递的话会覆盖pom内的配置;
  • Dfile:jar包的绝对路径;
  • DpomFile:jar包对应的Pom文件的绝对路径;
  • Durl:Nexus的地址;
  • DrepositoryId:对应的是setting.xml文件中配置的serverId,用来关联私服的用户名和密码。

方法3️⃣

使用cmd执行,此时要传递settings.xml文件,这样才能够获取用户名和密码信息:

mvn deploy:deploy-file 
--settings settingsFilePath\settings.xml 
-DgroupId=com.xxxx
-DartifactId=gpss-nonetty 
-Dversion=1.0 
-Dpackaging=jar 
-Dfile=jarFilePath\gpss-1.0.jar 
-DpomFile=pomFilePath\JavaGPSS-jar\pom.xml
-Durl=http://localhost:8081/repository/maven-releases/ 
-DrepositoryId=releases

2.总结

不管是手动上传还是命令上传,需要的基本信息都是一样的:

  • 仓库地址、账号;
  • 上传的jar、pom信息。
目录
相关文章
|
6天前
|
JavaScript Java Maven
云效产品使用常见问题之android sdk 构建出aar后,上传到私有maven仓库失败如何解决
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
1月前
|
Java Linux Maven
Linux系统Docker部署Nexus Maven并实现远程访问本地管理界面
Linux系统Docker部署Nexus Maven并实现远程访问本地管理界面
|
2月前
|
Java Maven
java修改当前项目的maven仓库地址为国内
修改当前项目的maven仓库地址为国内
|
2月前
|
Java Linux Maven
私有仓库工具Nexus Maven如何部署并实现远程访问管理界面
私有仓库工具Nexus Maven如何部署并实现远程访问管理界面
58 0
|
2月前
|
Java Apache Maven
【Maven从入门到如土】Maven 核心程序解压和配置
【Maven从入门到如土】Maven 核心程序解压和配置
61 0
|
2月前
|
Java 程序员 API
Springboot-swagger配置(idea社区版2023.1.4+apache-maven-3.9.3-bin)
Springboot-swagger配置(idea社区版2023.1.4+apache-maven-3.9.3-bin)
59 1
|
2月前
|
前端开发 Java 数据库连接
Springboot-MyBatis配置-配置端口号与服务路径(idea社区版2023.1.4+apache-maven-3.9.3-bin)
Springboot-MyBatis配置-配置端口号与服务路径(idea社区版2023.1.4+apache-maven-3.9.3-bin)
33 0
|
1月前
|
Java Maven
Maven【5】在IDEA环境中配置和使用Maven
Maven【5】在IDEA环境中配置和使用Maven
65 1
|
2天前
|
XML Java 项目管理
Maven的配置亲测有效
Maven的配置亲测有效
20 4
|
2天前
|
存储 安全 Java
maven仓库的版本列举
这段代码是Java程序,用于分析本地Maven项目的依赖版本。它遍历指定路径下的文件,提取groupId和version信息,并存储到HashSet中。最终,这些信息被写入到一个Excel文档。主要类`test`包含一个静态内部类`Version`来封装groupId和version字段。通过递归方法`func`处理文件夹结构,获取Maven坐标信息。
12 3

推荐镜像

更多