以下内容均以Sonatype Nexus Repository Manager OSS 3.27.0-03
版本进行说明。
1.上传
手动Upload
和mvn deploy
命令两种上传方式的应用场景不同,手动上传适用于工具类的jar
包,比如项目需要引入的lib
文件,这种可以选择手动上传。复杂的、有较多依赖的jar
包则需要连同pom
文件一起上传,此时需要使用mvn deploy
。
1.1 手动Upload
首先要登录Nexus,选择Upload,选择要上传的目标仓库,选择 File 填写 Group ID 等,最重要的是要点选Generate a POM file with these coordinates
如下图:
正常上传后会有jar
和pom
文件,这用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️⃣
使用idea
的Terminal
进行上传,由于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信息。