maven倉庫--搭建局域網私服(windows版)


使用nexus搭建局域網私服

一. 認識mav倉庫

1.1 maven倉庫的作用

  回想之前不用maven的時候,我們用eclipse原始的項目骨架構建項目時,在工程目錄下往往有一個lib文件夾用來存放工程所需jar文件,每次建一個新工程時都會有這樣一個lib文件夾。然后將jar復制進lib文件夾配置路徑,很顯然有大量的重復工作,而且不同項目所用jar包不盡相同,需要我們慢慢去分辨。而后我們用了項目管理工具比如svn或者git,我們需要把把大量的jar文件引入代碼庫,這也不是一件很合適的事。
  而maven能夠幫我們解決這些問題,maven倉庫是專門用來存放jar文件的位置(也可以用來存放項目war,zip,pom等文件)。maven倉庫中為每個jar文件分配了一個坐標,比如jstl的jar包:

<groupId>javax.servlet</groupId>        組ID
<artifactId>jstl</artifactId>           構建ID
...  其余屬性后續介紹

 

這樣做的話,maven能很方便的進行項目依賴版本的控制。簡單說maven倉庫就是幫我們統一管理項目構件。

1.2 maven倉庫分類

maven倉庫分類

  項目構建的查詢路徑:首先查詢本地倉庫,未找到就會查詢中央倉庫,沒找到就會報錯。中央倉庫地址有:

  1. http://www.sonatype.org/nexus/ 私服nexus用
  2. http://mvnrepository.com/ 推薦使用
  3. http://repo1.maven.org/maven2
    上面三個是較為常見的,也是項目中使用較多的,但是由於下載速度太慢,並且倉庫的jar文件不完整,實際企業開發需要我們搭建私服倉庫。

二. 安裝使用nexus

  這里注意搭建maven私服不僅僅只有這一種工具。博主用的版本是nexus-2.12.0。

  1. 點擊下載,密碼: 8mel
  2. 下載完成后解壓即可,解壓完成到目錄nexus-2.12.0-01-bundle\nexus-2.12.0-01\bin\jsw下可以看到:nexus安裝圖1
  3. 博主電腦是64位所以打開最后一個文件夾:
    nexus安裝圖2
  4. 點擊第二個bat文件設置為windows服務,開啟nexus后訪問網址 http://localhost:8081/nexus/啟動后打開如下頁面,即代表nexus安裝並啟動成功。image

三. 配置maven私服

  1. 點擊右上角Login登陸,初始賬號為admin,密碼是admin123 登陸成功可修改賬號密碼,自己找。
  2. 點擊左邊的導航Respositories。
    私服搭建1
    可以看到默認有一些倉庫,倉庫類型Type或名稱的意義:
  • hosted 宿主倉庫,用來發布一些第三方不允許的組件,比如oracle驅動等商業軟件的jar包
  • proxy 代理遠程的倉庫,比如上面寫得三個maven遠程倉庫。如果本地不存在某些jar文件時就會到這些代理站點去下載。
  • releases 內部的模塊中release模塊的發布倉庫
  • snapshots 發布內部的snapshot模塊的倉庫
  • 3rd party 第三方依賴的倉庫,本地上傳jar包后使用
  • group 組倉庫,用來添加其他的倉庫,方便開發人員設置
    開始搭建私服倉庫,值得注意的是:maven項目索引:maven項目索引就是用來方便在私服站點查找相關依賴構建的功能。所以在搭建私服之前,應該下載maven索引,10M足左右,將倉庫的索引下載選項改成true后保存;maven私服搭建2保存后可以在Adminstration下--Scheduled Tasks可以看到下載進度是running,下載完之后在左側搜索欄搜索jar包比如所有spring就會出現索引
  • 這一步是必不可少的如果所以呢無法下載,或者下載完之后任然無法搜索,可以查看nexus的日志進行排錯(也可以在我博客下面留言,一起踩坑):
  • 3.添加自己代理的遠程庫,有時候我們的項目需要引入一些特殊的jar文件,比如Jboss的某些jar包,這時候也可以在私服中代理該遠程倉庫:
    maven私服搭建3
    點擊add后添加代理類型,依次填寫id,name和url,這樣的話,在項目中不再需要在pom.xml中配置遠程倉庫:
<repository>
    <id>jboss</id>
    <name>JBoss Repository</name>
    <url>http://repository.jboss.com/maven2/</url>
    <releases>
        <updatePolicy>daily</updatePolicy><!-- never,always,interval n -->
        <enabled>true</enabled>
        <checksumPolicy>warn</checksumPolicy><!-- fail,ignore -->
    </releases>
    <snapshots>
        <enabled>false</enabled>
    </snapshots>
    <layout>default</layout>
</repository>

 

4.宿主倉庫的使用,上面提到的一些特殊的商業性質相關的jar文件,比如oracle的驅動包,ojdbc.jar並不支持遠程下載,這時候可以將我們本地下載好的jar包上傳到私服。
宿主倉庫
注意GAV設置要與你pom.xml中一致,上傳后添加到Artifacts點擊上傳即可:
宿主倉庫2
5.由於私服倉庫數量過多,導致配置復雜度提高,所以需要用到上述的group類型倉庫:
maven私服搭建4
切記點擊刷新,刷新后點擊唯一的一個group倉庫,點擊配置Configuration就可以看到剛才我們手動添加的代理倉庫,然后將代理倉庫添加到組倉庫,這樣依賴,項目中之需要配置組倉庫的url就可以訪問多個私服倉庫。

值得注意的是:左側的倉庫列表是有序的,以前在pom.xml中配置自定義倉庫的時候都會把速度快的倉庫放在前面(因為maven是在找不到下載jar包才會去下一個倉庫下載,然后下載慢的並不會跳過)所以在左側的列表中把下載快的放在前面,直接拖動即可,下面是兩個比較快的倉庫:

<repository>
    <id>nexus</id>
    <name>local private nexus</name>            開源中國的
    <url>http://maven.oschina.net/content/groups/public/</url>
</repository>
<repository>
    <id>alimaven</id>
    <name>aliyun maven</name>                   阿里巴巴的
    <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</repository>

四. 局域網使用maven私服

4.1 單個項目使用maven私服

在上述步驟完成后,即可在項目中引用私服,在pom.xml中改變默認下載倉庫url:
指定私服倉庫,我的ip是170,不要全盤復制

<repositories>  
    <repository>  
        <id>nexus</id>  
        <name>nexus</name>  
        <url>http://192.168.1.170:8081/nexus/content/groups/public/</url>  
        <releases>  
            <enabled>true</enabled>  
        </releases>  
        <snapshots>  
            <enabled>true</enabled>  
        </snapshots>  
    </repository>  
</repositories>

 

指定插件倉庫

<pluginRepositories>  
    <pluginRepository>  
        <id>nexus</id>  
        <name>nexus</name>  
        <url>http://192.168.1.170:8081/nexus/content/groups/public/</url>  
        <releases>  
            <enabled>true</enabled>  
        </releases>  
        <snapshots>  
            <enabled>true</enabled>  
        </snapshots>  
    </pluginRepository>  
</pluginRepositories>

 

配置好之后就可以從私服下載依賴包了。但是這種方式只能在改項目中起作用,每次配置項目都需要寫一遍,為了將懶人模式進行到底,我們還可以指定全局的私有倉庫。

4.2 全局指定私服

找到maven文件的中的setting.xml文件
setting.xml
改變setting.xml中的配置:
在以下是配置的

</mirrors>  
    <mirror>  
          <id>central</id>  
          <mirrorOf>*</mirrorOf>  
          <name>Central Repository</name>  
          <url>http://192.168.1.170:8081/nexus/content/groups/public/</url>  
    </mirror>  
</mirrors>  

這樣一來,這台電腦上所有maven項目下載jar文件時都會先訪問局域網170的電腦的中央倉庫。
-----------------------------------windows配置私服完畢-----------------------------------
擴展:setting,xml中各標簽的意義:

1.servers(服務器)

<servers>
    <server>
        <id>server001</id>
        <username>my_login</username>
        <password>my_password</password>
        <privateKey>${usr.home}/.ssh/id_dsa</privateKey>
        <passphrase>some_passphrase</passphrase>
        <filePermissions>664</filePermissions>
        <directoryPermissions>775</directoryPermissions>
        <configuration></configuration>
    </server>
</servers>

id與pom.xml中distributionManagement的id保持一致,服務器標識
username和password表示服務器認證需要的用戶民和密碼
privateKey, passphrase一組密鑰 (不常用)
filePermissions, directoryPermissions如果在部署的時候會創建一個倉庫文件或者目錄,這時候就可以使用權限(不常用)
2.mirrors(鏡像)

<mirrors>
    <mirror>
        <id>planetmirror.com</id>
        <name>PlanetMirror Australia</name>
        <url>http://downloads.planetmirror.com/pub/maven2</url>
        <mirrorOf>central</mirrorOf>
    </mirror>
</mirrors>

 

設置一個中央倉庫的鏡像,看倉庫分類,也是遠程倉庫的一種配置方式。
3.profiles(構建環境)
這個可能比較難理解,maven權威指南一書中這樣說:

  Profile能讓你為一個特殊的環境自定義一個特殊的構建;
  構建環境的兩個例子是產品環境和開發環境。當你在開發環境中工作時,你的系統可能被配置成訪問運行在你本機的開發數據庫實例,而在產品環境中,你的系統被配置成從產品數據庫讀取數據。Maven能讓你定義任意數量的構建環境(構建profile),這些定義可以覆蓋pom.xml中的任何配置。

簡單理解就是你可以先profile中先構件好項目運行的環境,比如預設了A環境實在開發中使用,而實際上線是B環境,那么在上線的時候我們不需要一個個修改pom.xml中的配置,只需要激活改profile即可。
4.activation(激活構建環境 )

<activation>
    <activeByDefault>false</activeByDefault>
    <jdk>1.5</jdk>
    <os>
        <name>Windows XP</name>
        <family>Windows</family>
        <arch>x86</arch>
        <version>5.1.2600</version>
    </os>
    <property>
        <name>mavenVersion</name>
        <value>2.0.3</value>
    </property>
</activation>

 

指定profile中配置的環境在什么時候開始生效
5.activeProfiles(激活了的profile)

<activeProfiles>
<activeProfile>env-test</activeProfile>
</activeProfiles>

 

在setting.xml最后的一個標簽,表示env-test這個profile已被激活

以上單純代表博主個人看法,如有理解錯誤或者疑問請拍磚指教。
參考資料:《Maven權威指南》 ,Maven學習 (四) 使用Nexus搭建Maven私服


免責聲明!

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



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