利用mvn deploy命令上傳包(轉)


本文轉自https://blog.csdn.net/chenaini119/article/details/52764543

mvn安裝 
下載maven的bin,在apache官方網站可以下載。 
https://maven.apache.org/download.cgi

在PATH里加入maven的bin的路徑

配置完畢后,在Windows命令提示符下,輸入mvn -v測試一下。是否安裝成功。

mvn:deploy在整合或者發布環境下執行,將最終版本的包拷貝到遠程的repository,使得其他的開發者或者工程可以共享。

以將ojdbc14傳到nexus中的thirdparty為例

一 配置settings.xml

因為nexus是需要登陸操作,當然可以通過配置免登陸,這是后話。 
在settings.xml的

<server> <id>thirdparty</id> <username>admin</username> <password>admin123</password> </server>
  • 1
  • 2
  • 3
  • 4
  • 5

當然如果你要上傳包去其他倉庫,可依照此例,如

<server> <id>central</id> <username>admin</username> <password>admin123</password> </server>
  • 1
  • 2
  • 3
  • 4
  • 5

如果進行deploy時返回Return code is: 401錯誤,則需要進行用戶驗證或者你已經驗證的信息有誤。

二 cmd輸入命令

mvn deploy:deploy-file -DgroupId=com.vip.vfc -DartifactId=common -Dversion=1.0.0 -Dpackaging=jar -Dfile=E:\common.jar -Durl=http://localhost:8081/nexus/content/repositories/releases -DrepositoryId=releases

DgroupId和DartifactId構成了該jar包在pom.xml的坐標,項目就是依靠這兩個屬性定位。自己起名字也行。 
Dfile表示需要上傳的jar包的絕對路徑。 
Durl私服上倉庫的位置,打開nexus——>repositories菜單,可以看到該路徑。 
DrepositoryId服務器的表示id,在nexus的configuration可以看到。 
Dversion表示版本信息,怎樣得到一個jar包准確的版本呢? 
解壓該包,會發現一個叫MANIFEST.MF的文件,這個文件就有描述該包的版本信息。 
比如Manifest-Version: 1.0可以知道該包的版本了。

上傳成功后,在nexus界面點擊3rd party倉庫可以看到這包。

今天deploy項目時,maven報錯401,百度了一下,找到以下文章,解決了問題,所以就考了過來。 
源地址是:http://www.netingcn.com/maven-deploy-nexus.html

首先在Nexus中創建一個自己私有的倉庫,步驟為Repositories –> Add –> Hosted Repository,在頁面的下半部分輸入框中填入Repository ID和Repository Name即可,比如分別填入myrepo和 my repository,點擊save就創建完成了。

如果要把構建部署至私服中,需要在構建的 pom.xml 文件增加 distributionManagement 配置項,有多種協議可以用來部署構建,這里主要講兩種。

第一種配置如下: 
  • 1
  • 2
<project> 
[...] <distributionManagement> <repository> <id>myrep</id> <name>my repository</name> <url>file:/usr/local/mvn-private-server/nexus-oss-webapp-1.9.2.3/./../sonatype-work/nexus/storage/myrep/</url> </repository> </distributionManagement> [...] </project> 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

說明:其中id就是需要部署構建的倉庫Id,name似乎不重要,可以隨便輸入,url就是倉庫的configuration中Default Local Storage Location項的對應的信息。采用此種方法,服務器不會對部署操作進行認證,同時配置也把倉庫的物理存儲地址完全暴露,感覺不是太好。

第二種配置如下: 
  • 1
  • 2
<project> 
[...] <distributionManagement> <repository> <id>tagphi</id> <url>http://nexus-server-ip:8081/nexus/content/repositories/myrep</url> </repository> </distributionManagement> [...] </project> 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

說明:上述的distributionManagement信息可以在對於的倉庫的Summary中找到。

配置好后,此時執行mvn deploy,部署應該不會成功,根據提示信息,重新執行 mvn deploy -e 或 mvn deploy -X,此時能看到具體的錯誤信息,報Return code is: 401錯,這個是因為發布者沒有權限,需要把用戶認證信息配置在maven的settings.xml中,該文件在mavne安裝包下的conf目錄下,這是一個全局配置,同時可以把該文件復制到 userdir/.m2 目錄下,這樣配置就只對當前用戶生效。在settings.xml文件中servers段中添加如下信息

  <server> <id>myrep</id> <username>deployment</username> <password>password</password> </server> 
  • 1
  • 2
  • 3
  • 4
  • 5

其中id就是部署倉庫的id,username是作為部署用戶,Nexus系統默認的deployment,密碼為deployment123,可以在security — users中找到,如果需要設置密碼,在用戶列表中找到該用戶,在該用戶上點擊右鍵,會出來一個菜單供重置密碼或修改密碼。此時在執行 mvn deploy,應該可以看到成功發布了。當第二次執行 mvn deploy 又失敗,這次失敗原因是Return code is: 400,該錯誤的原因是在創建倉庫時在configuration中的Deployment Policy設置為了Disable Redeploy,修改為Allow Redeploy即可。

私服搭建 
1.確定已安裝maven和jdk環境 
2.下載nexus http://www.sonatype.org/nexus/go 
3.解壓后進入/bin/jsw目錄 
4.根據本機操作系統選擇相應版本,此處以64位windows為例 
5.雙擊install-nexus.bat安裝nexus服務,然后雙擊start-nexus.bat啟動服務 
6,訪問http://localhost:8081/nexus/,出現下面頁面表示安裝成功 
7.點擊右上角的Log in,輸入默認賬號,密碼 
8.點擊Server配置服務器信息,勾選Http Proxy Settings,並設置代理服務器 
9.添加第三方jar包,nexus提供了3rd party、Snapshots、Releases這三個目錄存放第三方jar包 
10.上傳第三方jar包 
11.確定填寫無誤后,點擊Add Artifact(可添加多個),然后點擊Upload Artifact上傳所有jar包 
12.上傳成功后在可在Releases中查看 
13.在其他項目的pom.xml中引用 

<repositories> <repository> <id>nexus</id> <name>Team Nexus Repository</name> <url>http://localhost:8081/nexus/content/repositories/releases/</url> </repository> </repositories> <!-- 插件地址 --> <pluginRepositories> <pluginRepository> <id>nexus</id> <name>Team Nexus Repository</name> <url>http://localhost:8081/nexus/content/repositories/releases/</url> </pluginRepository> </pluginRepositories> <!-- 引用的jar包 --> <dependencies> <dependency> <groupId>com.fibre.hello</groupId> <artifactId>helloworld</artifactId> <version>0.0.1-Releases</version> </dependency> </dependencies>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

從Maven項目中導出項目依賴的jar包 
  一、導出到默認目錄 targed/dependency 
  從Maven項目中導出項目依賴的jar包:進入工程pom.xml 所在的目錄下,執行如下命令: 
  1、mvn dependency:copy-dependencies或在eclipse中,選擇項目的pom.xml文件,點擊右鍵菜單中的Run As,見下圖紅框中,在彈出的Configuration窗口中,輸入 dependency:copy-dependencies后,點擊運行; 
  2、maven項目所依賴的jar包會導出到targed/dependency目錄中。 
  二、導出到自定義目錄中 
  在maven項目下創建lib文件夾,輸入以下命令: 
  1、mvn dependency:copy-dependencies -DoutputDirectory=lib; 
  2、maven項目所依賴的jar包都會復制到項目目錄下的lib目錄下。 
  三、設置依賴級別 
  同時可以設置依賴級別,通常使用compile級別 
  mvn dependency:copy-dependencies -DoutputDirectory=lib -DincludeScope=compile


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM