用artifactory搭建maven2內部伺服器
訪問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 安裝目錄的位置的指令碼是:
- export JAVA_OPTS = -Dartifactory.home=/home/amangat/artifactory-1.2.1-rc1
設定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’中的配置:
- <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns="http://artifactory.jfrog.org/xsd/1.0.0"
- xsi:schemaLocation="http://artifactory.jfrog.org/xsd/1.0.0
- http://www.jfrog.org/xsd/artifactory-v1_0_0.xsd">
- <!-- Backup every 12 hours -->
- <!--<backupCronExp>0 0 /12 * * ?</backupCronExp>-->
- <localRepositories>
- <localRepository>
- <key>private-internal-repository</key>
- <description>Private internal repository</description>
- <handleReleases>true</handleReleases>
- <handleSnapshots>true</handleSnapshots>
- </localRepository>
- <localRepository>
- <key>3rd-party</key>
- <description>3rd party jars added manually</description>
- <handleReleases>true</handleReleases>
- <handleSnapshots>false</handleSnapshots>
- </localRepository>
- </localRepositories>
- <remoteRepositories>
- <remoteRepository>
- <key>ibiblio</key>
- <handleReleases>true</handleReleases>
- <handleSnapshots>false</handleSnapshots>
- <excludesPattern>org/artifactory/**,org/jfrog/**</excludesPattern>
- <url>http://repo1.maven.org/maven2</url>
- </remoteRepository>
- </remoteRepositories>
- </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檔案必須被修改以使用新的倉庫:
- <profiles>
- <profile>
- <id>dev</id>
- <properties>
- <tomcat5x.home>C:/InstalledPrograms/apache-tomcat-5.5.20</tomcat5x.home>
- </properties>
- <repositories>
- <repository>
- <id>central</id>
- <url>http://localhost:8080/artifactory/repo</url>
- <snapshots>
- <enabled>false</enabled>
- </snapshots>
- </repository>
- <repository>
- <id>snapshots</id>
- <url>http://localhost:8080/artifactory/repo</url>
- <releases>
- <enabled>false</enabled>
- </releases>
- </repository>
- </repositories>
- <pluginRepositories>
- <pluginRepository>
- <id>central</id>
- <url>http://localhost:8080/artifactory/repo</url>
- <snapshots>
- <enabled>false</enabled>
- </snapshots>
- </pluginRepository>
- <pluginRepository>
- <id>snapshots</id>
- <url>http://localhost:8080/artifactory/repo</url>
- <releases>
- <enabled>false</enabled>
- </releases>
- </pluginRepository>
- </pluginRepositories>
- </profile>
- </profiles>
使用pom.xml配置Maven
也可以在專案的pom.xml檔案中設定倉庫,下面是pom.xml範例檔案:
- <project xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
- http://maven.apache.org/maven-v4_0_0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <groupId>test</groupId>
- <artifactId>test</artifactId>
- <packaging>jar</packaging>
- <version>1.0-SNAPSHOT</version>
- <name>test</name>
- <url>http://maven.apache.org</url>
- <repositories>
- <repository>
- <id>central</id>
- <url>http://localhost:8080/artifactory/repo</url>
- <snapshots>
- <enabled>false</enabled>
- </snapshots>
- </repository>
- <repository>
- <id>snapshots</id>
- <url>http://localhost:8080/artifactory/repo</url>
- <releases>
- <enabled>false</enabled>
- </releases>
- </repository>
- </repositories>
- <pluginRepositories>
- <pluginRepository>
- <id>central</id>
- <url>http://localhost:8080/artifactory/repo</url>
- <snapshots>
- <enabled>false</enabled>
- </snapshots>
- </pluginRepository>
- <pluginRepository>
- <id>snapshots</id>
- <url>http://localhost:8080/artifactory/repo</url>
- <releases>
- <enabled>false</enabled>
- </releases>
- </pluginRepository>
- </pluginRepositories>
- <dependencies>
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>3.8.1</version>
- <scope>test</scope>
- </dependency>
- </dependencies>
- </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 開發模式有了一個企業級的管理平臺,這個文件希望對大家有幫助,轉載請註明出處,謝謝支援。
相關文章
- git 乾貨系列:(六)公司內部搭建 git 伺服器Git伺服器
- 使用JFrog Artifactory Open Source 搭建私服
- CentOS7.9 搭建內部yum源伺服器同步阿里yum源CentOS伺服器阿里
- 搭建一個攝像頭應用程式 應用程式內部攝像頭
- 一行命令搭建內部的管道
- 訪問 laradock 伺服器內部 http 伺服器伺服器HTTP
- CentOS 搭建內部Yum源同步阿里Yum源CentOS阿里
- PHP HTTP 500 - 內部伺服器錯誤PHPHTTP伺服器
- 伺服器內部錯誤500的原因伺服器
- 內部伺服器之間介面通訊伺服器
- 在5分鐘內搭建企業內部私有npm倉庫NPM
- java內部類,區域性內部類,靜態內部類,匿名內部類Java
- 如何使用Nginx對Artifactory進行http應用NginxHTTP
- java之內部類(InnerClass)----非靜態內部類、靜態內部類、區域性內部類、匿名內部類Java
- 10-Java內部類——成員內部類、區域性內部類、匿名內部類Java
- 5分鐘內3種方法搭建企業內部私有npm倉庫NPM
- java內部類之成員內部類之匿名內部類Java
- 雲伺服器 Linux內部無法解析域名伺服器Linux
- 從零開始通過 Artifactory 搭建公網的 maven 倉庫Maven
- 使用FRP、雲伺服器搭建內網穿透FRP伺服器內網穿透
- java內部類之成員內部類之區域性內部類Java
- 什麼是http500內部伺服器錯誤?HTTP伺服器
- 伺服器出現遠端內部錯誤的原因伺服器
- Java內部類詳解--匿名內部類Java
- java內部類之成員內部類Java
- Java 內部類的意義及應用Java
- 內部類
- 軟體APP開發遊戲搭建用國內的伺服器需要備案嗎用哪裡的伺服器比較好APP開發遊戲伺服器
- 用樹莓派搭建svn伺服器樹莓派伺服器
- 搭建高可用MongoDB叢集(三):深入副本集內部機制MongoDB
- Java內部類詳解-- 成員內部類Java
- java內部類,為什麼需要內部類?Java
- Java內部類和匿名內部類的用法Java
- Maven2 用於度量和品質保證的外掛Maven
- Artifactory Terrafrom plugin來了!Plugin
- 自建Maven倉庫 - ArtifactoryMaven
- 淺談Nginx伺服器的內部核心架構設計!Nginx伺服器架構
- 淺談Nginx伺服器的內部核心架構設計Nginx伺服器架構