搭建maven私服

一、下載完Nexus以後進入目錄\Nexus\nexus-2.12.1-01\bin\jsw\這目錄底下有各類各樣的操做系統的子目錄,根據系統進入到對應目錄中,個人是64位windows看到的內容以下:
web

console-nexus.bat是控制檯啓動nexus,用這個能夠啓動和重啓。apache

install-nexus.bat先將nexus註冊成windows服務,之後直接啓動了。相應的uninstall-nexus是卸載服務windows

start-nexus.bat和stop-nexus.bat分別是啓動和關閉服務。安全

二、登陸Nexus提供的管理後臺,由於我們下載的目錄裏有自帶的容器了,因此能夠直接本機地址:遊覽器中輸入http://localhost:8081/nexus/,出現以下圖所示就表明nexus已經啓動成功。默認端口是8081,能夠在\Nexus\nexus-2.12.1-01\conf\nexus.properties這個文件裏更改端口app

# Jetty sectionwebapp

application-port=端口號maven

application-host=0.0.0.0測試

nexus-webapp=${bundleBasedir}/nexusui

nexus-webapp-context-path=/nexusurl


能夠點右上角的log in 登陸默認的用戶名和密碼:admin/admin123。嘿嘿好多公司的私服都是默認的用戶名和密碼,之前沒搭過私服,在之前公司本身maven的settings.xml裏見到這用戶名和密碼還頗感意外,如今明白了。

三、登陸後點Repositories以後右側列表入下:有幾個概念本身以前老是不明白,藉機會查了一下表示的意思。


最經常使用的實際就是這三個了。

Releases: 用來部署管理內部的發佈版本構件的宿主類型倉庫

Snapshots:用來部署管理內部的快照版本構件的宿主類型倉庫

Central: 用來代理maven中央倉庫中發佈版本構件的倉庫


這幾個知道一下就好了。

3rd party: 沒法從公共倉庫得到的第三方發佈版本的構件倉庫

Apache Snapshots: 用了代理ApacheMaven倉庫快照版本的構件倉庫

Central M1 shadow: 用於提供中央倉庫中M1格式的發佈版本的構件鏡像倉庫

Codehaus Snapshots: 用來代理CodehausMaven 倉庫的快照版本構件的倉庫


重點講一下PublicRepositories

PublicRepositories:這個對應的Type是group,默認的倉庫組(settings.xml裏最經常使用的配置這個),這個概念maven裏沒有的,maven就只管憑座標取包。點中這一行後在下面的幾個標籤裏選configuration往下面拖一下有Order Group Repositories:它就是說將幾個倉庫放一塊兒管理,好比公司裏可能有本身封裝的一系列jar包獨立建一個倉庫名字,把它們和默認的這幾個倉庫一塊兒管理,取包的時候按照這裏的順序,通常把central放最後由於這個是中央倉庫,從apache的中央倉庫取最慢。

四、接下來最重要的是配置Nexus和開啓索引,若是咱們不開啓這個,在裏面搜索的時候啥也找不到,開啓之後搜索就能夠找到座標了。搜索的時候能夠按照:

Keyword Search          關鍵字搜索

Classname Search       類名

GAV Search                 沒查到猜的(g對應group,v對應version,a對應artifactid,說白了就是座標)

Checksum Search        校驗和搜索,沒用過

下載遠程索引到本地:仍是點中Central,Apache SpnapShots 在下面把Download Remote Indexes 屬性改爲True以後點save,在上面的Central,Apache SpnapShots上右鍵點Repair Index,就開啓了,等着它下一下子索引目錄。以後點Browse Index就能夠看到目錄結構了,此時搜索就能夠用了。

五、接下來就是使用的問題了在maven的settings.xml文件裏首先是配置本機使用的下載的jar包保存的路徑,就是所謂的localRepository本地倉庫問題。

  <!-- localRepository
   | The path to the local repository maven will use to store artifacts.
   |
   | Default: ${user.home}/.m2/repository
  <localRepository>/path/to/local/repo</localRepository>
  -->
  <localRepository>E:/repository/maven_repository</localRepository>

而後是鏡像,這裏mirrorOf能夠寫central就是隻爲central作鏡像,若是寫*號則是表明全部倉庫,settings.xml裏配置的都是全局的就是針對全部使用這個maven的工程。

<mirror>
      <id>nexus</id>
      <mirrorOf>*</mirrorOf>
      <name>NexusMirror</name>
      <url>http://172.20.50.20:8081/nexus/content/groups/public/</url>
</mirror>

  <!-- interactiveMode
   | This will determine whether maven prompts you when it needs input. If set to false,
   | maven will use a sensible default value, perhaps based on some other setting, for
   | the parameter in question.
   |
   | Default: true
  <interactiveMode>true</interactiveMode>
  -->

  <!-- offline
   | Determines whether maven should attempt to connect to the network when executing a build.
   | This will have an effect on artifact downloads, artifact deployment, and others.
   |
   | Default: false
  <offline>false</offline>
  -->

interactiveMode

指定Maven是否試圖與用戶交互來獲得輸入,默認是true

usePluginRegistry

若是設置爲true,則在{user.home}/.m2下須要有一個plugin-registry.xml來對plugin的版本進行管理。默認是false

offline

若是不想每次編譯的時候都去查找遠程中心倉庫,就須要設置爲true,但前提是本地倉庫中已有須要的jar包,默認是false

Servers

通常私服弄好了就不須要這個了,可是若是有安全方面的須要,須要提供認證信息才能訪問這些私服,這時就須要使用servers元素(須要注意的是配置私服的信息是在pom文件中,可是認證信息則是在setting.xml中,這是由於pom文件每每是被提交到代碼倉庫中供全部成員訪問的,而setting.xml是存放在本地的,這樣是安全的)。

Profile

這個須要詳細說一下,pom.xml文件裏也是能夠配這個的,可是settings.xml是全局的,profile能夠根據不一樣的條件就是他的id來激活不一樣的構建過程。它的原文註釋裏也很清楚的寫了比較推薦的命名方式是env-test/env-product這種形式,通常能夠用來區分生產環境和測試環境用不一樣的構建。

<profile>
     <id>pahc-dev</id>
     <repositories>
       <repository>
           <id>local-nexus</id>
           <name>local private nexus</name>
           <url>http://172.20.50.20:8090/nexus/content/groups/public/</url>
           <releases>  
              <enabled>true</enabled>  
           </releases>  
           <snapshots>  
              <enabled>true</enabled>  
           </snapshots> 
       </repository>
     </repositories>
   </profile>

激活不一樣的構建有不少種,好比仍是在這個配置文件裏用activeProfiles標籤

<activeProfiles>
	<activeProfile>pahc-dev</activeProfile>
</activeProfiles>

也能夠用maven命令在打包的時候加命令 mvn package –P pahc-dev 若是是 mvn package -P !pahc-dev 就是不啓用這個構建。還能夠根據操做系統來啓動某個構建,或者根據文件路徑,或者根據jdk來啓用某個構建。

來一個jdk的例子

<profiles>  
       <profile>  
              <id>profileTest1</id>  
              <jdk>[1.4,1.7)</jdk>  
       </profile>  
<profiles>

參考了兩個博客:

http://blog.csdn.net/liujiahan629629/article/details/39272321

http://blog.csdn.net/stypace/article/details/38458377

相關文章
相關標籤/搜索