發佈構件到Maven倉庫的幾種方案比較
1、Maven 原生髮布方式
- mvn deploy : 直接通過pom.xml文件中定義的版本和服務器信息,將構件發佈到服務器
- mvn deploy:deploy-file :指定某個文件作爲版本發佈,但是一次只能發佈一個jar文件,不適合多項目結構的maven工程。可以通過參數的方式覆蓋pom.xml文件的配置
mvn deploy:deploy-file -Dfile=/opt/pr****n/*-ommon/*ommon-base/target/**-mon-base-2.0.0-SNAPSHOT.jar -DrepositoryId=nexus-snapshots -DgroupId=a -DartifactId=b -Dversion=1.0.0 -Durl=file:/opt/repository/aaa/
- 參考文檔:
https://maven.apache.org/plugins/maven-deploy-plugin/deploy-file-mojo.html
https://maven.apache.org/plugins/maven-deploy-plugin/
2、Maven插件方式(maven-release-plugin)
-
pom.xml文件中安裝 maven-release-plugin 插件
-
對插件內容進行配置
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-release-plugin</artifactId> <version>2.5.3</version> <configuration> <!--git用戶名--> <!--suppress UnresolvedMavenProperty --> <username>${username}</username> <!--git密碼--> <!--suppress UnresolvedMavenProperty --> <password>${password}</password> <!--mvn目標指令--> <goals>-f pom.xml deploy</goals> </configuration> </plugin>
-
同時需要在pom.xml中配置git 或 svn地址
<scm> <!--release包需要放入的nexus或者其他maven release包的倉庫url地址--> <url>http://********/repository/maven-releases/</url> <!--connection, developerConnection: 都是連接字符串,其中後者是具有write權限的scm連接 --> <!--需要打包項目的git地址--> <developerConnection>scm:git:http://*********/****-common.git</developerConnection> <!--需要打包項目的git地址--> <connection>scm:git:http://*********/****-common.git</connection> <tag>HEAD</tag> </scm>
-
執行命令進行發佈,也可回滾
mvn release:prepare -Dusername=username -Dpassword=password mvn release:perform -Dusername=username -Dpassword=password
-
此種方式的問題:
- 有多步交互,會要求創建代碼倉庫的tag
- 發佈過程要求輸入release版本
- 要求指定新的snapshot版本
- 會在服務器上創建snapshot 分支
3、通過gradle插件(Maven Publish Plugin)
- 只適用於gradle項目
- 參考文檔:https://docs.gradle.org/current/userguide/publishing_maven.html