maven發布jar包到nexus
在編碼過程中,有些通用的代碼模塊,有時候我們不想通過復制拷貝來粗暴地復用,因為這樣不僅體現不了變化,也不利於統一管理。這裏我們使用maven deploy的方式,將通用的模塊打成jar包,發布到nexus,讓其他的項目來引用,以更簡潔高效的方式來實現復用和管理。
第一:maven的settings.xml文件中設置<server>標簽
<server> <id>release</id> <username>admin</username> <password>admin123</password> </server> <server> <id>snapshot</id> <username>admin</username> <password>admin123</password> </server>
此處設置的用戶名和密碼都是nexus的登陸配置
第二:在項目的pom.xml文件中設置
<distributionManagement> <repository> <id>release</id> <url>http://192.168.1.123:8081/nexus/content/repositories/releases/</url> </repository> <snapshotRepository> <id>snapshot</id> <url>http://192.168.1.123:8081/nexus/content/repositories/snapshots/</url> </snapshotRepository> </distributionManagement>
在此,url都是nexus相應倉庫的鏈接地址,這一步做完之後,已經完成了發布所需要的基本配置。【試試命令:mvn deploy】
註意:<server>中的<id>要和<repository>、<snapshotRepository>的<id>一致,maven在發布時,會根據此id來查找相應的用戶名密碼進行登錄驗證並上傳文件。
第三:發布的靈活性配置
maven會判斷版本後面是否帶了-SNAPSHOT,如果帶了就發布到snapshots倉庫,否則發布到release倉庫。這裏我們可以在pom.xml文件中,設置
<groupId>com.test</groupId> <artifactId>my-test</artifactId> <packaging>jar</packaging> <version>${project.release.version}</version> <properties> <java.version>1.8</java.version> <project.release.version>1.0-SNAPSHOT</project.release.version> </properties> <profiles> <profile> <id>product</id> <properties> <project.release.version>1.0</project.release.version> </properties> </profile> </profiles>
說明:通過占位符${project.release.version}來控制需要發布的版本,用命令mvn deploy -P product,發布my-test的1.0版本到releases庫。如果使用命令mvn deploy,則默認使用 1.0-SNAPSHOT版本號,將發布my-test的1.0-SNAPSHOT版本到snapshots庫。
第四:發布時遇到的一些問題
1.部署到snapshot倉庫時,jar包會帶上時間戳,這沒關系,maven會自動取相應版本最新的jar包;
2.Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.8.2:deploy (default-deploy) on project my-test: Failed to deploy artifacts: Could not transfer artifact...from/to release...
部署到release倉庫時,相同版本的jar包不能提交。解決辦法是修改一下版本號,再提交即可。
3.持續更新...
maven發布jar包到nexus