1. 程式人生 > >架構(二)Maven安裝以及Nexus配置

架構(二)Maven安裝以及Nexus配置

word rtb java_home 交互 conf tar.gz 文件 etc oot

一 Maven安裝配置

1.1 下載

http://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin.tar.gz

1.2 上傳並解壓

tar -zxvf apache-maven-3.5.4-bin.tar.gz

1.3 將解壓好的文件移到/data/program/software/maven3

mv apache-maven-3.5.4/ /data/program/software/maven3

1.4 配置全局變量(/etc/profile)

export MAVEN_HOME=/data/program/software/maven3
export PATH=$PATH:$MAVEN_HOME/bin

如果是非root用戶安裝,可以配置用戶變量

~/.bash_profile

1.5 刷新配置並測試(source /etc/profile)

mvn -v

1.6 settings.xml配置

1.6.1 maven的配置文件settings.xml存在兩個地方

1.安裝的地方:${MAVEN_HOME}/conf/settings.xml 全局配置
2.用戶的目錄:${user.home}/.m2/settings.xml 用戶配置

1.6.2 如下是settings.xml的配置

本地倉庫,該值表示構建系統本地倉庫的路徑,默認值是${user.home}/.m2/repository
<localRepository>usr/local/maven</localRepository>
Maven是否需要和用戶交互以獲得輸入,如果maven需要和用戶交互以獲得輸入,則設置成true,反之false,默認是true
<interactiveMode>true</interactiveMode>
maven是否需要使用plugin-registry.xml文件來管理插件版本
如果設置成true,則在{user.home}/.m2下需要有一個plugin-registry.xml來對plugins的版本進行管理
默認是false
<usePluginRegistry>false</usePluginRegistry>
表示maven是否需要在離線模式下運行,如果構建系統需要在離線模式下運行,則為true,默認false
當由於網絡設置原因或者安全因素,構建服務器不能連接遠程倉庫的時候,該配置就十分有用
<offline>false</offline>
當插件的組織ID(groupId)沒有顯示提供時,供搜尋插件組織ID(groupId)的列表
該元素包含一個pluginGroup元素列表,每個子元素包含了一個組織ID(groupId)
當我們使用某個插件,並且沒有在命令行為其提供組織ID的時候,Maven就會使用該列表
默認情況下該列表包含了org.apache.maven.plugins
<pluginGroups>
  <pluginGroup>org.codehaus.mojo</pluginGroup>
</pluginGroups>

二 使用Nexus配置Maven私有倉庫

2.1 安裝配置Nexus

2.1.1 下載nexus

https://www.sonatype.com/download-oss-sonatype

2.1.2 上傳解壓

tar -zxvf nexus-3.13.0-01-unix.tar.gz

2.1.3 將解壓好的文件移到/data/program/software/nexus3

mv nexus-3.13.0-01/ /data/program/software/nexus3

2.1.4 修改配置

a 修改bin目錄下nexus.rc文件

run_as_user="root"

b 修改bin目錄下的nexus文件

INSTALL4J_JAVA_HOME_OVERRIDE=/data/program/software/java8

c 修改etc目錄下的nexus-default.properties文件

application-port=8282

d 修改bin目錄下的nexus.vmoptions文件

如何機器內存不足的話還需要修改jvm配置

-XX:LogFile=./sonatype-work/nexus3/log/jvm.log
-Dkaraf.data=./sonatype-work/nexus3
-Djava.io.tmpdir=./sonatype-work/nexus3/tmp

2.1.5 啟動

進入bin目錄啟動:./nexus run &

2.1.6 訪問

localhost:8081
默認端口號:8081
默認賬號:admin
默認密碼:admin123

2.2 配置maven的settings.xml文件

<localRepository>${user.home}/.m2/repository</localRepository>
<offline>false</offline>
<interactiveMode>true</interactiveMode>
<pluginGroups>
	<pluginGroup>org.mortbay.jetty</pluginGroup>
	<pluginGroup>org.jenkins-ci.tools</pluginGroup>
</pluginGroups>
		
<servers>
	<server>
		<id>nexus-releases</id>
		<username>admin</username>
		<password>admin123</password>
	</server>
	<server>
		<id>nexus-snapshots</id>
		<username>admin</username>
		<password>admin123</password>
	</server>
</servers>
這是server的ID(不是登錄進來的user),與maven想要連接上的repository/mirror中的id元素相匹配。
username,password這兩個元素成對出現,表示連接這個server需要用戶名和密碼,在nexus中,默認管理員用
戶admin,密碼admin123,這裏使用兩個服務器配置,分別對應release,snapshot
		
<mirrors>
	<mirror>
		<id>nexus-releases</id>
		<mirrorOf>*</mirrorOf>
		<url>http://localhost:8081/repository/maven-public/</url>
	</mirror>
	<mirror>
		<id>nexus-snapshots</id>
		<mirrorOf>*</mirrorOf>
		<url>http://localhost:8081/repository/maven-snapshots/</url>
	</mirror>
</mirrors>
id唯一的鏡像標識和用戶友好的鏡像名稱,id被用來區分mirror元素,並且當連接時候被用來獲得相應的證書
mirrorOf鏡像所包含的倉庫id,列如,指向maven central倉庫的鏡像(http://repo1.maven.org/maven2/),
設置這個元素為central,更多的高級映射列如repo1, repo2或者*都是可以的,沒必要一定和mirror相匹配,在這裏
mirrorOf應該使用*,以表明是所有倉庫都會被鏡像到指定的的地址
url鏡像基本的url,構建系統將使用這個url連接倉庫,這裏應該添加nexus的地址,地址可以在nexus倉庫頁面中找到
<profiles>
	<profile>
		<id>nexus</id>
		<repositories>
			<repository>
				<id>nexus-releases</id>
				<url>http://nexus-releases</url>
				<releases>
					<enabled>true</enabled>
				</releases>
				<snapshots>
					<enabled>true</enabled>
				</snapshots>
			</repository>
			<repository>
				<id>nexus-snapshots</id>
				<url>http://nexus-snapshots</url>
				<releases>
					<enabled>true</enabled>
				</releases>
				<snapshots>
					<enabled>true</enabled>
				</snapshots>
			</repository>
		</repositories>
	</profile>
</profiles>
profile項代表maven的基本配置。按照maven的一貫尿性,很多xml的配置項都會有一個配置項的復數形式作
為父節點,以保證該配置項可以配置多個。在profiles項中,當然也可以配置多個profile,不過在這裏配一個就夠了,
下面介紹profile項的各個子節點
id用來確定該profile的唯一標識
repositories/repository用以規定依賴包倉庫的相關信息,在下屬節點中,id就不用多說了,url是指定倉庫地址,
這裏使用偽造的地址,否則即使設置了mirror,maven也有可能會直接從中央倉庫下載包;releases和snapshots放在
一塊說吧,這兩個節點下屬的enabled節點用以規定相應的依賴包是否對當前策略有效,假如將snapshot的enabled設置為disable,
則不會下載snapshot包
<activeProfiles>
	<activeProfile>nexus</activeProfile>
</activeProfiles>
用以規定當前啟用的配置,將對應的profile的id加入到這一項即可使profile生效

2.3 上傳jar到nexus

2.3.1 第一種方式

mvn deploy:deploy-file -DgroupId=com.alibaba -DartifactId
=dubbo -Dversion=2.4.8 -Dpackaging=jar -Dfile=/users/dennis/Documents/software/dubbo-2.8.4.jar
-Durl=http://localhost:8081/repository/maven-releases/ -DrepositoryId=nexus-releases

2.3.2 第二種方式

代碼的pom.xml中直接接入
<distributionManagement>
	<repository>
		<id>nexus-releases</id>
		<name>maven-releases</name>
		<url>http://localhost:8081/repository/maven-releases/</url>
	</repository>
</distributionManagement>
mvn deploy

架構(二)Maven安裝以及Nexus配置