自己搭建Maven伺服器私服
在公司或組織內部搭建Maven伺服器可以實現組織內模組或庫包程式碼共享,本文討論使用Nexus Repository OSS開源伺服器如何搭建公司內部的Maven生態。
當然除了使用 Nexus Repository OSS比較正規管理以外,如果是簡單可以共享的庫包也可以使用http等方式共享,這種方式比較簡單易行,先簡單談一下這種方式。
本地庫
由於Maven不支援商業產品Oracle資料庫,需要建立本地庫,建立本地庫的辦法是,ofollow,noindex" target="_blank">下載oracle jdbc驅動 ,然後鍵入:
mvn install:install-file -Dfile=ojdbc8.jar -DgroupId=com.oracle -DartifactId=ojdbc8 -Dversion=12.2.0.1 -Dpackaging=jar
這就在Maven本地建立了jdbc的jar包庫包,然後你就可以在自己電腦上使用pom.xml配置訪問:
<dependency> <groupId>com.oracle</groupId> <artifactId>ojdbc8</artifactId> <version>12.2.0.1</version> </dependency>
Http伺服器庫
在你本機maven倉庫目錄找到mavenrep\com\oracle\ojdbc8,現在可以將從com開始的目錄com\oracle\ojdbc8整個複製到http伺服器上,比如我可以上傳到github伺服器:
https://github.com/banq/jdon-mvn-repo/raw/master/releases
這樣我們在pom.xml中就使用如下配置可以獲取到這個http伺服器上的庫包:
<repositories> <repository> <id>jdon-jdbc</id> <url>https://github.com/banq/jdon-mvn-repo/raw/master/releases</url> </repository> </repositories>
Nexus Repository OSS
下載OSS:https://www.sonatype.com/download-oss-sonatype ,現在是3.0以上版本,下載安裝或解壓,到bin目錄下:
啟動過程:
- 開啟瀏覽器並輸入URL:http://localhost:8081/ 將顯示Nexus Repository Manager歡迎螢幕。
- 在NXRM歡迎螢幕右上角上,單擊“ 登入signin” 。將顯示“登入”彈出框。
- 輸入預設使用者名稱,即“ admin ”和預設密碼,即“ admin123” 。
- 單擊“ 登入” 。登入對話方塊已關閉,您已登入NXRM。
專案配置
現在我們可以為自己專案建立一個倉庫,比如名為my-repository,找到建立倉庫的按鈕:
進去後,選擇maven2(hosted),如果你像做網際網路上倉庫的快取代理,就選擇maven2(proxy),hosted就是自己的私庫。
名字輸入 my-repository,其他可以預設,最下面一行選擇Allow redeploy,這樣可以反覆試驗,儲存即可。
建立好後,可以在倉庫列表中看到我們的倉庫名稱為my-repository,點按進入:
注意我們的倉庫URL是:
http://127.0.0.1:8081/repository/my-release/
這樣在我們專案中的pom.xml可以配置這個地址釋出了:
<!-- 打包釋出 --> <distributionManagement> <repository> <id>my-release</id><!--這個ID需要與你的release倉庫的Repository ID一致--> <url>http://127.0.0.1:8081/repository/my-release/</url> </repository> </distributionManagement>
當然訪問這個地址需要使用者名稱和密碼。
下一步設定使用者名稱和密碼,首先建立一個角色,比如testRole:
這裡給與testRole的許可權我們選擇的是nx-all,熟悉之後,可以進行詳細的定製。
然後選擇右邊users,建立本地使用者,角色role選擇我們建立的testRole。注意記住使用者名稱和密碼,需要在maven的 settings.xml中配置:
<server>
<id>my-release</id>
<username>test</username>
<password>test</password><!--這個密碼就是你設定的密碼-->
</server>
這裡my-release就是我們的倉庫名稱,使用者和密碼是建立本地使用者你設定的。
pom.xml檔案最後是這樣:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0" 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.example</groupId> <artifactId>wwww</artifactId> <version>1.0</version> <!-- 打包釋出 --> <distributionManagement> <repository> <id>my-release</id><!--這個ID需要與你的release倉庫的Repository ID一致--> <url>http://127.0.0.1:8081/repository/my-release/</url> </repository> </distributionManagement> </project>
釋出配置
現在可以在專案中執行mvn clean deploy釋出了,在 Idea執行deploy之後控制檯輸出如下:
[INFO] --- maven-deploy-plugin:2.7:deploy (default-deploy) @ wwww ---
Uploading: http://127.0.0.1:8081/repository/my-release/com/example/wwww/1.0/wwww-1.0.jar
Uploaded: http://127.0.0.1:8081/repository/my-release/com/example/wwww/1.0/wwww-1.0.jar (3 KB at 11.0 KB/sec)
Uploading: http://127.0.0.1:8081/repository/my-release/com/example/wwww/1.0/wwww-1.0.pom
Uploaded: http://127.0.0.1:8081/repository/my-release/com/example/wwww/1.0/wwww-1.0.pom (917 B at 7.6 KB/sec)
Downloading: http://127.0.0.1:8081/repository/my-release/com/example/wwww/maven-metadata.xml
Downloaded: http://127.0.0.1:8081/repository/my-release/com/example/wwww/maven-metadata.xml (291 B at 3.2 KB/sec)
Uploading: http://127.0.0.1:8081/repository/my-release/com/example/wwww/maven-metadata.xml
Uploaded: http://127.0.0.1:8081/repository/my-release/com/example/wwww/maven-metadata.xml (291 B at 3.3 KB/sec)
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
最後到http://127.0.0.1:8081/確認: