• 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/)
    
    • 1

    勾选后生成的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
    • 3
    • 4
    • 5
    • 6
    • 7

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

    在这里插入图片描述

    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>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    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
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    方法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>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50

    执行 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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    # 传递 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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    2.总结

    手动上传的实用更广一些。

  • 相关阅读:
    Leetcode 623. 在二叉树中增加一行
    web3.0学习入门1:什么是web3.0
    关于面试,95%会问到的Java面试题(高级部分)
    Echarts-实现3D柱状图显示,并单个柱子变色
    单图像三维重建算法
    发送成绩的app或小程序推荐
    Mysql查看执行语句
    Linux系统下交叉编译工具的安装实现
    repmgr管理pg高可用
    Linux学习——目录操作和库使用
  • 原文地址:https://blog.csdn.net/weixin_39168541/article/details/125505608