ava Maven項目之Nexus私服搭建和版本管理應用
目錄:
- Nexus介紹
- 環境、軟件準備
- Nexus服務搭建
- Java Maven項目版本管理應用
- FAQ
1、Nexus介紹
Nexus是一個強大的Maven倉庫管理器,它極大地簡化了自己內部倉庫的維護和外部倉庫的訪問。利用Nexus你可以只在一個地方就能夠完全控制訪問 和部署在你所維護倉庫中的每個Artifact。我們可以在局域網搭建一個maven私服,用來部署第三方公共構件或者作為遠程倉庫在該局域網的一個代理。
2、環境、軟件準備
本次演示環境,我是在本機mac上操作,以下是我本地軟件及版本:
- Nexus:nexus-2.14.4-03
- Jdk:1.8.0_91
- Maven:3.3.9
- Git: 2.10.1
- GitLab:8.17.4
註意:Java Maven項目版本管理,這裏我們scm使用git來做版本管理,gitlab作為代碼存儲,這裏我們忽略Jdk、Maven、Git、GitLab的安裝過程,著重介紹下Nexus的搭建,以及Java Maven項目配置以及版本管理配置。
3、Nexus服務搭建
這裏我們使用Nexus OSS開源版本,官網下載地址:Nexus Repository Manager OSS,這裏我選擇2.x的tag.gz包下載安裝,安裝到我本地/Users/wanyang3目錄下。
1)解壓縮下載包
cd /Users/wanyang3
tar -zxvf nexus-2.14.4-03-bundle.tar.gz
解壓縮後,會在當前目錄nexus-2.14.4-03-bundle下出現兩個目錄:
nexus-2.14.4-03:nexus服務目錄,包括日誌,配置、啟動、應用。
sonatype-work:nexux存儲目錄,下載上傳的各個包存貯在這裏。
2) 修改配置並啟動服務
修改配置:
cd /Users/wanyang3/nexus-2.14.4-03-bundle/nexus-2.14.4-03/conf
vim nexus.properties
說明:該文件是nexus的配置屬性文件,application-port默認服務端口8081,因為本地8081端口已經占用,所以我們這裏修改為9998,即:application-port=9998,其他配置,如nexus-work、runtime、application-host、nexus-webapp等默認即可。
啟動:
cd /Users/wanyang3/nexus-2.14.4-03-bundle/nexus-2.14.4-03/bin
./Nexus start
Usage: ./nexus { console | start | stop | restart | status | dump }
註意:若啟動報錯,說沒有權限啟動,或者讓指定USER時,有兩種方法解決:
1. 使用RUN_AS_USER=root ./Nexus start命令啟動
2. 修改Nexus文件,設置打開註釋,並設置RUN_AS_USER=root,以後只需要執行./Nexus start即可。
3)設置Nexus
成功啟動Nexus後,我們可以瀏覽器訪問http://127.0.0.1:9998/nexus/,就可以看到Nexus服務Web管理頁面歡迎頁面了。
3.1 創建倉庫
點擊右上角Log In,輸入用戶名和密碼登錄,Nexus默認賬戶用戶名為admin,密碼為admin123,登錄以後,我們現在可以創建一個個人倉庫了。點擊左側Repositories,我們可以看到默認的所有的倉庫列表。
我們可以看到倉庫類型有四種:
- hosted(宿主倉庫):用來部署自己,第三方或者公共倉庫的構件
- proxy(代理倉庫):代理遠程倉庫
- virtual(虛擬倉庫):默認提供了一個Central M1虛擬倉庫,用來將maven 2適配為maven 1
- group(倉庫組):統一管理多個倉庫
這裏我們選擇類型為hosted的創建一個wanyang3的Repositories,註意選擇Deployment Policy時,如果該倉庫多次部署的話,請選擇Allow Redeploy,否則後續部署會報錯。
3.2 設置用戶及權限
點擊左側Security—》Users,設置用戶及權限。
我們可以看到有三個默認的賬號:
- Admin(管理員賬號):Nexus管理員權限,最高權限,什麽操作都可以做。
- Deployment(部署賬號):Nexus部署權限,以及所有倉庫的CRUDV操作權限。
- Anonymous(匿名賬號):Nexus匿名權限,以及所有倉庫只讀權限。
我們正常訪問倉庫的時候,是不需要這三個賬戶的,一般我們會把Deployment賬戶暴漏出來,方便開發或運維部署項目使用,我們可以直接使用該部署賬號,亦可以新創建一個自己的賬號信息,通過Add Role Management來控制該賬號的權限。
註意:這裏要記住設置的用戶名和密碼,下邊配置Maven Setting.xml的時候配置用戶名和密碼信息。
Java Maven項目版本管理應用
一、Java Maven項目基本配置
我們先來看一個最基礎的pom.xml文件,我們要達到的目的是,讓我們依賴的jar包,從我們剛配置的Nexus私服上拉取和存儲。
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 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.wanynag3.efp</groupId>
<artifactId>efp_demo</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>war</packaging>
<name>efp_demo</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<spring.version>4.3.2.RELEASE</spring.version>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-oxm</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.7</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.10</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.10</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
<