用artifactory搭建maven2內部伺服器

y_keven發表於2013-12-20

訪問http://www.jfrog.org/sites/jfrog/index.html

下載最新的zip包(內建jetty)

 

 下載和解壓artifactory。目錄結構如下:

 

 

  這些目錄是:


    backup —— 倉庫的備份,可以使用cron表示式設定備份策略,quartz定時排程程式在指定的時間裡執行備份任務,備份時間間隔在‘ARTIFACTORY_INSTALLATION_FOLDER>/etc/artifactory.config.xml’檔案中指定


    bin ——內建jetty 伺服器的執行批處理檔案


    data —— 包含derby資料庫檔案,如果你想以一個空的構件庫開始,可以刪除這個目錄中的所有內容,在全新的artifactory 安裝中,這個目錄是空的。


    etc —— artifactory 的配置檔案,有‘artifactory.config.xml’ 、‘jetty.xml ‘和‘log4j.,properties’

    lib —— 包含所有依賴的jar檔案


    logs —— 日誌檔案


    webapps —— 包含war檔案,它可以被拷貝到Tomcat中安裝。

 

 在Tomcat 6中部署


  部署‘<ARTIFACTORY_INSTALLATION_FOLDER>/webapp’目錄中的war檔案到 ‘<TOMCAT_INSTALLATION_FOLDER>/webapps’目錄中,在jdk1.6和Tomcat 6環境下不需要改變tomcat的配置,Tomcat 6會檢測並部署它。


  當這個Web應用程式被部署的時候,需要這些資訊:


    儲存構件的資料庫的位置 
    artifactory 的xml配置檔案的位置
    備份目錄的位置


  可以在一個配置檔案中指定所有3個資訊,在Tomcat啟動期間我們只需要指定artifactory的安裝目錄,artifactory會計算出其餘的資訊。可選的方法是使用jdbc設定好derby資料庫的連線並且在Web應用程式中配置好artifactory (通過在Web應用程式中包含artifactory.config.xml檔案)。不管怎樣,這個方法是簡單的。


  artifactory 安裝目錄的位置可以被設定為一個環境變數,在Linux中,用‘.bash’來輸出artifactory 安裝目錄的位置的指令碼是:

 

Java程式碼 
  1. export JAVA_OPTS = -Dartifactory.home=/home/amangat/artifactory-1.2.1-rc1  
  在Windows中,可以新增到Tomcat啟動選項中:

 

 

設定Maven倉庫


  建議的方法是在我們的Maven倉庫中建立3個庫(或子庫),它們是:


    內部私有倉庫private-internal-repository:這個倉庫包含僅在團隊內使用的構件,它們由開發者手動上傳,這個倉庫不與ibiblio 中的遠端倉庫同步,因為這個倉庫(或子倉庫)中的構件是團隊私有的。


    第三方庫3rd-party:這個倉庫包含公有的但不在ibiblio伺服器上的構件,例如,最新版本的尚不在ibiblio的元件或jdbc驅動。這個倉庫不與ibiblio 同步,因為ibiblio 沒有這些jar。


    Ibiblio 快取Ibiblio-cache:這個倉庫與ibiblio 倉庫同步,它是ibiblio 上的構件的快取。

 

  設定這三個倉庫,需要修改<ARTIFACTORY_INSTALLATION_FOLDER>/etc/artifactory.config.xml’中的配置:

 

Xml程式碼
  1. <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  2.         xmlns="http://artifactory.jfrog.org/xsd/1.0.0"  
  3.         xsi:schemaLocation="http://artifactory.jfrog.org/xsd/1.0.0   
  4.         http://www.jfrog.org/xsd/artifactory-v1_0_0.xsd">  
  5.     <!-- Backup every 12 hours -->  
  6.     <!--<backupCronExp>0 0 /12 * * ?</backupCronExp>-->  
  7.     <localRepositories>  
  8.       <localRepository>  
  9.           <key>private-internal-repository</key>  
  10.           <description>Private internal repository</description>  
  11.           <handleReleases>true</handleReleases>  
  12.           <handleSnapshots>true</handleSnapshots>  
  13.       </localRepository>  
  14.       <localRepository>  
  15.           <key>3rd-party</key>  
  16.           <description>3rd party jars added manually</description>  
  17.           <handleReleases>true</handleReleases>  
  18.           <handleSnapshots>false</handleSnapshots>  
  19.       </localRepository>  
  20.     </localRepositories>  
  21.     <remoteRepositories>  
  22.       <remoteRepository>  
  23.           <key>ibiblio</key>  
  24.           <handleReleases>true</handleReleases>  
  25.           <handleSnapshots>false</handleSnapshots>  
  26.           <excludesPattern>org/artifactory/**,org/jfrog/**</excludesPattern>  
  27.           <url>http://repo1.maven.org/maven2</url>  
  28.       </remoteRepository>  
  29.     </remoteRepositories>  
  30. </config>  

  啟動Tomcat並且輸入 http://localhost:8080/artifactor


  下面是artifactory的首頁面:

 

 

  以使用者名稱admin和密碼password登入,點選瀏覽倉庫的連結,你可以檢視倉庫的內容。

 

 

配置Maven以使用新的倉庫

 

 配置Maven的settings.xml 檔案


  Maven使用位於‘~/.m2/settings.xml’目錄的settings.xml檔案來獲取Maven倉庫 ,如果沒有在該檔案中指定倉庫,Maven預設使用ibiblio.org上的倉庫, settings.xml檔案必須被修改以使用新的倉庫:

 

Xml程式碼 
  1. <profiles>  
  2.       <profile>  
  3.             <id>dev</id>  
  4.             <properties>  
  5.                   <tomcat5x.home>C:/InstalledPrograms/apache-tomcat-5.5.20</tomcat5x.home>  
  6.             </properties>  
  7.             <repositories>  
  8.                   <repository>  
  9.                         <id>central</id>  
  10.                         <url>http://localhost:8080/artifactory/repo</url>  
  11.                         <snapshots>  
  12.                               <enabled>false</enabled>  
  13.                         </snapshots>  
  14.                   </repository>  
  15.                   <repository>  
  16.                         <id>snapshots</id>  
  17.                         <url>http://localhost:8080/artifactory/repo</url>  
  18.                         <releases>  
  19.                               <enabled>false</enabled>  
  20.                         </releases>  
  21.                   </repository>  
  22.             </repositories>  
  23.             <pluginRepositories>  
  24.                   <pluginRepository>  
  25.                         <id>central</id>  
  26.                         <url>http://localhost:8080/artifactory/repo</url>  
  27.                         <snapshots>  
  28.                               <enabled>false</enabled>  
  29.                         </snapshots>  
  30.                   </pluginRepository>  
  31.                   <pluginRepository>  
  32.                         <id>snapshots</id>  
  33.                         <url>http://localhost:8080/artifactory/repo</url>  
  34.                         <releases>  
  35.                               <enabled>false</enabled>  
  36.                         </releases>  
  37.                   </pluginRepository>  
  38.             </pluginRepositories>  
  39.       </profile>  
  40. </profiles>  
  

 使用pom.xml配置Maven


  也可以在專案的pom.xml檔案中設定倉庫,下面是pom.xml範例檔案:

 

Xml程式碼 
  1. <project xmlns="http://maven.apache.org/POM/4.0.0"  
  2. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0   
  4. http://maven.apache.org/maven-v4_0_0.xsd">  
  5. <modelVersion>4.0.0</modelVersion>  
  6. <groupId>test</groupId>  
  7. <artifactId>test</artifactId>  
  8. <packaging>jar</packaging>  
  9. <version>1.0-SNAPSHOT</version>  
  10. <name>test</name>  
  11. <url>http://maven.apache.org</url>  
  12.        <repositories>  
  13.                       <repository>  
  14.                               <id>central</id>  
  15.                       <url>http://localhost:8080/artifactory/repo</url>  
  16.                       <snapshots>  
  17.                               <enabled>false</enabled>  
  18.                       </snapshots>  
  19.               </repository>  
  20.               <repository>  
  21.                       <id>snapshots</id>  
  22.                       <url>http://localhost:8080/artifactory/repo</url>  
  23.                       <releases>  
  24.                               <enabled>false</enabled>  
  25.                       </releases>  
  26.               </repository>  
  27.       </repositories>  
  28.       <pluginRepositories>  
  29.               <pluginRepository>  
  30.                       <id>central</id>  
  31.                       <url>http://localhost:8080/artifactory/repo</url>  
  32.                       <snapshots>  
  33.                               <enabled>false</enabled>  
  34.                       </snapshots>  
  35.               </pluginRepository>  
  36.               <pluginRepository>  
  37.                       <id>snapshots</id>  
  38.                       <url>http://localhost:8080/artifactory/repo</url>  
  39.                       <releases>  
  40.                               <enabled>false</enabled>  
  41.                       </releases>  
  42.               </pluginRepository>  
  43.       </pluginRepositories>  
  44. <dependencies>  
  45.    <dependency>  
  46.      <groupId>junit</groupId>  
  47.      <artifactId>junit</artifactId>  
  48.      <version>3.8.1</version>  
  49.      <scope>test</scope>  
  50.    </dependency>  
  51. </dependencies>  
  52. </project>  

 

使用預設帳號登入就可以開始管理 Maven 庫了。廢話不說,先上圖:

 

 

可以看到,Artifactory 給我們定義了 6 個預設的 repo 庫(見中上方紅框),當然我們也可以自己新增。然後每個 repo 庫都對應著各自的虛擬地址(見右下方紅框),另外還有一系列主要的遠端庫地址(對於一般開發來說夠用了)。

 

開發過程中,開發人員可以通過自己的 Maven 客戶端來往 Artifactory 伺服器請求需要的包(通過配置 Maven 的 settings.xml 檔案),我們可以在 Home:Home:Maven Settings 讓 Artifactory 幫助我們生成 Maven 的 settings.xml,這樣拷貝下來替換掉 ${MAVEN_HOME}/conf/settings.xml 就可以開始自己的 Maven 開發之旅了。

 

釋出過程中,我們可以通過 mvn install 命令把開發完成的包釋出到本地,然後再通過 Artifactory 的 Web UI 介面上傳到 Artifactory Repo 庫,或者也可以通過

 

以上就是基本的專案開發流程,接下來依次介紹一下 Artifactory 主要的常用功能(官方使用文件可以參考 http://wiki.jfrog.org/confluence/display/RTF/Welcome+to+Artifactory! ):

 

01、Home:Home:Maven Settings

主要用於根據使用者選擇生成對應的 settings.xml 給開發人員使用,支援下載。

 

02、Artifacts:Browse:XXX Browser

這裡有 Tree Browser 和 Simple Browser 主要方便使用者瀏覽系統中的所有 repo 倉庫,支援刪除操作。注意:這裡可以看到 xxx-releases-xxx 和 xxx-snapshots-xxx 兩類的 repo 庫,我建議大家把開發中產生的一些庫放在 snapshots 下,而正式的庫放在 releases 下面,這樣層次會比較清晰。

 

03、Artifacts:Browse:Builds

用於展示和 CI 工具整合後的所有專案的 Builds 資訊,可參考 http://wiki.jfrog.org/confluence/display/RTF/Build+Integration 。

 

04、Artifacts:Search:XXX Search

強大的搜尋功能,支援 Quick Search / Class Search / GAVC Search / POM & XML Search 可以快速方便的搜尋定位庫包。

 

05、Deploy:Deploy:Single Artifact

部屬一個單獨的 Artifact 包,一般分兩個步驟,先上傳一個包到 Artifactory,然後填寫你需要的包資訊(你可以到 jar 包的 META-INF 下檢視到此類資訊)。另外,我們也可以通過命令列(類似:mvn -e deploy:deploy-file -DgroupId=com.mycompany -DartifactId=my-app -Dversion=1.0-SNAPSHOT -Dpackaging=jar -Dfile=target/my-app-1.0-SNAPSHOT.jar -DrepositoryId=snapshots -Durl=http://192.168.1.11:8081/artifactory/libs-snapshots-local)直接釋出包,當然做這個之前必須配置 Maven 的 settings.xml 配置檔案中的 <servers>...</servers> 段,填入正確的使用者和密碼即可。此外注意:如果遇到 400 錯誤則表示你所傳的地址不對,比如以上例子中如果使用 http://192.168.1.11:8081/artifactory/libs-snapshots 就不可以了,因為這是 Alias 地址,Deploy 的時候必須用原來的地址哦。

 

06、Deploy:Deploy:Artifacts Bundle

上傳多個 Artifacts 包,需要把這些包打包成 ZIP 檔案,結構如下:

 

07、Admin:Configuration:General

一些 Common 的配置比如伺服器地址,上傳檔案限制,還有一些外觀設定。

 

08、Admin:Configuration:Repositories

主要對現有的 Repositories 優先順序排序調整,一般保持預設即可。

 

09、Admin:Configuration:Proxies

配置代理,可供遠端 repo 庫使用。

 

10、Admin:Security:General

是否允許匿名使用者訪問。

 

11、Admin:Security:Users

使用者管理,可以新增普通使用者或者管理員使用者,Artifactory 的使用者管理機制類似 Unix 系統,可以分組,另外也支援從 LDAP 中匯入。

 

12、Admin:Security:Groups

使用者組管理,可以建立多個組,方便使用者歸類,並可以應用到 RBAC (role-based access control) 許可權控制機制裡去。

 

13、Admin:Security:Permissions

可針對不同的 repo 設定不同的使用者或者組許可權,然後可在 Artifact:Browser 中檢視許可權是否正確。

 

14、Admin:Services:Backups

可設定定時備份,備份檔案將被儲存在 $ARTIFACTORY_HOME/backup/<backup_key> 位置。

 

15、Admin:Services:Indexer

新版的一大改進,支援 Nexus 格式的索引檔案,可以用在包括 IDEA, NetBeans, Eclipse 等多個主流的 Java 開發軟體裡,但是要知道的是 Artifactory 的索引並不依賴 Nexus 的哦。

 

16、Admin:Import & Export:Repositories

Repo 庫的匯入/匯出功能,支援 ZIP 格式,順便說下這裡面的 File Browser 作的不錯,呵呵。

 

17、Admin:Import & Export:System

系統級別的匯入/匯出功能,可備份/匯入整個 Artifactory 系統

 

18、Admin:Advanced:XXX

這裡面主要是一些其他功能,比如對一些系統日誌的分析功能,還可以直接編輯生成的 Artifactory 系統配置檔案(當然如果你非常熟悉 Artifactory 了),還有關於 Security 許可權設定的 Acl 配置檔案哦。

 

到這裡基本把 Artifactory 的功能基本介紹了一遍,大家可以參考一下,當然具體的一些經驗和使用技巧還需要在具體的應用中積累,有時間補充這個使用說明文件了。總的來說使用 Artifactory 之後還是給日常 Java 開發以及包管理帶來了很大的方便,它讓 Maven 主導的 Java 開發模式有了一個企業級的管理平臺,這個文件希望對大家有幫助,轉載請註明出處,謝謝支援。

相關文章