【From】 https://my.oschina.net/360yg/blog/1588899html
前言:一般容許上傳的遠程倉庫有兩種:Snapshots和Releases,分別爲快照版倉庫和穩定版倉庫。 快照版倉庫用於存放不穩定的開發包,穩定版倉庫用於存放穩定的包。
解決方案有兩個: apache
有時候有個jar文件你沒法從公共Maven倉庫找到,可是你能從其它獲得這個jar文件(甚至是POM),那麼你徹底能夠將這個文件部署到Nexus中,使其成爲標準流程的一部分。步驟以下: 點擊左邊導航欄的"Repository",在右邊的倉庫列表中選擇一個倉庫,如「3rd Party」,而後找到下面的tab,選擇最後一個「Artifact Upload」,你會看到構件上傳界面。選擇你要上傳的構件,並指定POM,(或者手工編寫GAV等信息),最後點擊Upload,該構件就直接被部署到了Nexus的"3rd Party"倉庫中。如圖:maven
二、經過Maven命令行部署學習
<!-- 遠程倉庫--> <servers> <server> <id>maven-snapshots</id> // 快照倉庫 ID <username>admin</username> <password>admin1234</password> </server> <server> <id>maven-releases</id> // 發佈倉庫 ID <username>admin</username> <password>admin1234</password> </server> </servers>
注:認證 id 這個必須和 nexus DrepositoryId 對應的倉庫標識(id)一致,那麼怎麼查看倉庫 ID 呢?url
以下圖spa
Nexus 2.12.0-01.net
OSS 3.6.0-02 版本界面以下命令行
別人生成好的 jar 的 pom 配置信息以下:code
<dependency> <groupId>com.zhenai.dakehu</groupId> <artifactId>dakehu-commons</artifactId> <version>1.0.0-SNAPSHOT</version> </dependency>
打開CMD,將其定位到你要上傳的jar包的文件夾,相似的輸入如下命令:(注意紅色的要一一對應)server
mvn deploy:deploy-file -DgroupId=com.zhenai.dakehu -DartifactId=dakehu-commons -Dversion=1.0.0-SNAPSHOT -Dpacckaging=jar -Dfile=dakehu-commons-1.0.0-SNAPSHOT.jar -DrepositoryId=maven-snapshots -Durl=http://112.124.33.150:8081/repository/maven-snapshots/
若是cmd 當前路徑與jar包的路徑在同一文件夾下,若是不在同一個目錄下,須要在-Dfile 後面寫上文件的絕對路徑。
deploy 上傳遇到的問題
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.7:deploy-file (default-cli) on project standalone-pom: Failed to deploy artifacts: Could not transfer artifact com.zhenai.dakehu:dakehu-commons:jar:1.0.0-20171212.105921-1 from/to maven-snapshots (http://112.124.33.150:8081/repository/maven-snapshots/): Failed to transfer file: http://112.124.33.150:8081/repository/maven-snapshots/com/zhenai/dakehu/dakehu-commons/1.0.0-SNAPSHOT/dakehu-commons-1.0.0-20171212.105921-1.jar.
Return code is: 401, ReasonPhrase: Unauthorized. -> [Help 1] ===> 用戶驗證失敗
說一下我遇到的問題:
一、neuxs 默認的賬號密碼 admin/admin123,同事偷偷把密碼改成 admin1234
二、maven setting.xml 中倉庫認證的 id 不對
<id>maven-snapshots</id> // ===》這個必須和 nexus DrepositoryId 對應的倉庫標識(id)一致