Linux 使用nexus搭建maven私服

環境要求 

          系統:LINUXcentos

          JDK:已安裝oracle

          Maven:已安裝(未安裝詳見maven安裝教程)maven

          Nexus:ide

全部版本下載地址:https://www.sonatype.com/download-oss-sonatype this

          Nexus是一個強大的Maven倉庫管理器,它極大地簡化了本身內部倉庫的維護和外部倉庫的訪問。url

Nexus經常使用功能就是:指定私服的中央地址、將本身的Maven項目指定到私服地址、從私服下載中央庫的項目索引、從私服倉庫下載依賴組件、將第三方項目jar上傳到私服供其餘項目組使用。idea

安裝Nexus

       解壓nexus文件

[root@centos6 var]# tar -zvxf nexus-2.12.0-01-bundle.tar.gz

注:解壓後有兩個文件夾:spa

  • nexus-2.12.0-01: 是nexus的核心文件
  • sonatype-work :倉庫目錄(maven下載jar存放地址)

   啓動Nexus

[root@centos6 nexus-2.12.0-01]# ./bin/nexus start

- ****************************************
WARNING - NOT RECOMMENDED TO RUN AS ROOT
****************************************

If you insist running as root, then set the environment variable RUN_AS_USER=root before running this script.

默認狀況下,不建議以root用戶運行Nexus,能夠修改bin/nexus中的配置跳過警告(修改RUN_AS_USER=root).net

[root@centos6 nexus-2.12.0-01]# vi bin/nexus

從新啓動Nexus插件

[root@centos6 nexus-2.12.0-01]# ./bin/nexus start

- ****************************************
WARNING - NOT RECOMMENDED TO RUN AS ROOT
****************************************
Starting Nexus OSS...

Started Nexus OSS.

注:Nexus默認端口8081,若是想修改端口。修改/conf/nexus.properties文件

訪問網址:http://192.168.1.11:8081/nexus/

點擊右上角的 Log In 按鈕便可登錄了。默認登陸帳號/密碼爲: admin/admin123 ,登錄成功後的界面

通常用到的倉庫種類是hosted、proxy。Hosted表明宿主倉庫,用來發布一些第三方不容許的組件,好比Oracle驅動、好比商業軟件jar包。Proxy表明代理遠程的倉庫,最典型的就是Maven官方中央倉庫、JBoss倉庫等等。若是構建的Maven項目本地倉庫沒有依賴包,那麼就會去這個代理站點去下載,那麼若是代理站點也沒有此依賴包,就回去遠程中央倉庫下載依賴,這些中央倉庫就是proxy。代理站點下載成功後再下載至本機。

hosted   類型的倉庫,內部項目的發佈倉庫
releases 內部的模塊中release模塊的發佈倉庫
snapshots 發佈內部的SNAPSHOT模塊的倉庫
3rd party 第三方依賴的倉庫,這個數據一般是由內部人員自行下載以後發佈上去
proxy   類型的倉庫,從遠程中央倉庫中尋找數據的倉庫
group   類型的倉庫,組倉庫用來方便咱們開發人員進行設置的倉庫

點擊Repositories,將列表中全部Type爲proxy 的項目的 Configuration 中的 Download Remote Indexes 設置爲True,下載Maven項目索引,項目索引是爲了使用者可以在私服站點查找依賴使用的功能。

將Releases倉庫的Deployment Policy設置爲 Allow ReDeploy:

固然咱們也避免不了會使用到一些第三方的 jar ,而這些jar包也不存在於互聯網上的maven中央倉庫中,這時咱們能夠手工添加jar 到咱們的私服中。

添加第三方 jar 

填寫完必選字段,點擊Upload Artifact(s)按鈕便可。

項目發佈

自動發佈構件到遠程倉庫,在工程pom.xml中添加:

<distributionManagement>
    <repository>
        <id>releases</id><!--這個ID須要與你的release倉庫的Repository ID一致-->
        <url>http://192.168.1.11:8081/nexus/content/repositories/releases</url>
    </repository>
    <snapshotRepository>
        <id>snapshots</id><!--這個ID須要與你的snapshots倉庫的Repository ID一致-->
        <url>http://192.168.1.11:8081/nexus/content/repositories/snapshots</url>
    </snapshotRepository>
</distributionManagement>

修改本地$MAVEN_HOME\conf目錄下的settings.xml配置文件,添加以下配置:

 <servers>
    <server>
        <id>releases</id>
        <username>admin</username>
        <password>admin123</password>
    </server>
    <server>
        <id>snapshots</id>
        <username>admin</username>
        <password>admin123</password>
    </server>
</servers>

在本地工程目錄下執行:

D:\ideaWork\Catering>mvn deploy

所部署的包就自動上傳到了nexus安裝目錄下的。

本地配置Nexus私服

配置Maven從Nexus下載構件:

在pom.xml中配置Nexus私服,這樣的配置只對當前的Maven項目有效:

<!--指定Nexus的構件倉庫-->
<repositories>
    <repository>
        <id>public</id>
        <name>Team Maven Repository</name>
        <url>http://192.168.1.11:8081/nexus/content/groups/public/</url>
        <releases>
            <enabled>true</enabled>
        </releases>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
    </repository>
</repositories>

<!--指定Nexus的插件倉庫-->
<pluginRepositories>
    <pluginRepository>
        <id>public</id>
        <name>Team Maven Repository</name>
        <url>http://192.168.1.11:8081/nexus/content/groups/public/</url>
        <releases>
            <enabled>true</enabled>
        </releases>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
    </pluginRepository>
</pluginRepositories>

若是想要所有Maven項目都適用的話,須要在本身本地Maven的conf/settings.xml中配置profile元素(配置在profiles節點中):

<profile>
    	<id>public</id>
    	<repositorys>
	        <repository>
	            <id>test1</id>
	            <url>http://192.168.1.11:8081/nexus/content/groups/public/</url>
	            <releases>
	                <enabled>true</enabled>
	            </releases>
	            <snapshots>
	                <enabled>true</enabled>
	            </snapshots>
	        </repository>
	    </repositorys>
	</profile>

在追加激活profile:

<activeProfiles>  
        <activeProfile>public</activeProfile> 
 </activeProfiles>

而後再配置鏡像,在mirrors節點下配置nexus信息:

<mirror>
	        <id>central</id>
	        <mirrorOf>*</mirrorOf>
	        <name>Nexus aliyun</name>
            <url>http://192.168.1.11:8081/nexus/content/groups/public/</url>
	    </mirror>
相關文章
相關標籤/搜索