http://forearrow.iteye.com/blog/171385
1. 介紹
Maven是Java開(kāi)發(fā)者中流行的構(gòu)建工具,Maven的好處之一是可以幫助減少構(gòu)建應(yīng)用程序時(shí)所依賴的軟件構(gòu)件的副本,Maven建議的方法是將所有軟件構(gòu)件存儲(chǔ)于一個(gè)叫做repository的遠(yuǎn)程倉(cāng)庫(kù)中。
Maven會(huì)從ibiblio.org中的公用倉(cāng)庫(kù)中同步構(gòu)件,這個(gè)公用倉(cāng)庫(kù)下載緩慢、不穩(wěn)定,并且不包含一些構(gòu)件的最新版本,而且不能上傳團(tuán)隊(duì)私有的構(gòu)件。通過(guò)設(shè)置內(nèi)部Maven倉(cāng)庫(kù),團(tuán)隊(duì)可以更有好地利用Maven倉(cāng)庫(kù)的優(yōu)勢(shì)并且克服使用ibiblio上的倉(cāng)庫(kù)時(shí)的缺點(diǎn)。
本文著眼于Maven倉(cāng)庫(kù)工具應(yīng)提供的一些功能,列出了選擇Maven倉(cāng)庫(kù)工具的標(biāo)準(zhǔn),說(shuō)明了使用Artifactory設(shè)置Maven倉(cāng)庫(kù)的相關(guān)步驟。在Linux和Windows中設(shè)置Maven倉(cāng)庫(kù)的過(guò)程是相同的,少數(shù)不同點(diǎn)在文中已經(jīng)用高亮顯示,本文列出了與這個(gè)Maven倉(cāng)庫(kù)的使用有關(guān)的POM文件的范例,用截圖來(lái)向用戶闡述如何設(shè)置Maven倉(cāng)庫(kù),Maven和artifactory配置范例也有列出。
?
1.1 背景知識(shí)
本文假定讀者熟悉以下的概念和技術(shù):
?Maven 2
?J2EE web 服務(wù)器部署過(guò)程(e.g. 在Tomcat中部署Web應(yīng)用程序)
?XML
?
1.2 Maven倉(cāng)庫(kù)的目的?
Maven倉(cāng)庫(kù)的目的是作為團(tuán)隊(duì)內(nèi)所使用的所有軟件構(gòu)件的內(nèi)部私有構(gòu)件倉(cāng)庫(kù),將Maven構(gòu)件(jar和pom)存儲(chǔ)到一個(gè)專(zhuān)門(mén)的Maven倉(cāng)庫(kù)比將它們存儲(chǔ)到版本控制系統(tǒng)中更有優(yōu)勢(shì),這是因?yàn)?#xff1a;
?構(gòu)件(jar)是二進(jìn)制文件,不屬于版本控制系統(tǒng),版本控制系統(tǒng)在處理文本文件方面比較好
?保持較小的版本控制數(shù)據(jù)庫(kù)
?Checkout、update和其他版本控制的操作可以更快
?
1.3 建立內(nèi)部私有倉(cāng)庫(kù)的優(yōu)勢(shì):
?減少可能的版本沖突
?減少首次構(gòu)建時(shí)需要的手動(dòng)干涉
?中央倉(cāng)庫(kù)包含所有依賴的軟件構(gòu)件,引用單一的中央倉(cāng)庫(kù)比引用多個(gè)獨(dú)立的本地庫(kù)要好?
?使用內(nèi)部倉(cāng)庫(kù)做clean構(gòu)建時(shí)會(huì)快些,因?yàn)镸aven構(gòu)件是從內(nèi)部服務(wù)器而不是從因特網(wǎng)上的ibiblio服務(wù)器獲取。
?
1.4 Maven構(gòu)件庫(kù)的類(lèi)型
本地倉(cāng)庫(kù)——位于開(kāi)發(fā)者的機(jī)器,由開(kāi)發(fā)者維護(hù),它從位于‘~home/.m2’ 目錄的‘settings.xml’文件中定義的Maven倉(cāng)庫(kù)上同步,如果在pom.xml或setting.xml文件中沒(méi)有設(shè)置內(nèi)部私有遠(yuǎn)程倉(cāng)庫(kù),那么開(kāi)發(fā)者機(jī)器上的這個(gè)本地倉(cāng)庫(kù)就會(huì)從ibiblio.org 上的公用Maven倉(cāng)庫(kù)上同步。
內(nèi)部私有遠(yuǎn)程倉(cāng)庫(kù)——這是我們將要設(shè)置的倉(cāng)庫(kù),我們將改變maven 的pom.xml或settings.xml文件來(lái)使用這個(gè)庫(kù)。
外部公用遠(yuǎn)程倉(cāng)庫(kù)——這是在ibiblio.org上的外部公用倉(cāng)庫(kù),默認(rèn)情況下,Maven從這個(gè)倉(cāng)庫(kù)上同步。
??
2.Maven倉(cāng)庫(kù)概覽
?
2.1 沒(méi)有Maven倉(cāng)庫(kù)下的開(kāi)發(fā)環(huán)境
?
2.2 具有團(tuán)隊(duì)內(nèi)部遠(yuǎn)程倉(cāng)庫(kù)的開(kāi)發(fā)環(huán)境
?
?
?
3. 本教程Maven倉(cāng)庫(kù)的用例介紹
?在內(nèi)部倉(cāng)庫(kù)中創(chuàng)建2個(gè)子庫(kù)
?Ibiblio 緩存‘Ibiblio-cache’ ——用于存儲(chǔ)從ibiblio.org中下載的構(gòu)件,可以公開(kāi)訪問(wèn),它將從外部的ibiblio倉(cāng)庫(kù)中同步
?內(nèi)部倉(cāng)庫(kù)internal-maven-repository——用于存儲(chǔ)團(tuán)隊(duì)內(nèi)部的構(gòu)件,它不與任何外部倉(cāng)庫(kù)同步,是團(tuán)隊(duì)專(zhuān)有的構(gòu)件庫(kù)
?可以創(chuàng)建另一個(gè)子倉(cāng)庫(kù),這是可選的,用于存儲(chǔ)那些公用的但是在ibiblio上暫時(shí)沒(méi)有的構(gòu)件,例如一些構(gòu)件的新最版本,這個(gè)倉(cāng)庫(kù)不與內(nèi)部倉(cāng)庫(kù)同步。我們可以稱它為第三方‘3rd-party’
?瀏覽遠(yuǎn)程庫(kù),最好是通過(guò)一個(gè)web瀏覽器
?在倉(cāng)庫(kù)中搜索構(gòu)件
?從版本控制系統(tǒng)中下載代碼,修改settings.xml指向內(nèi)部倉(cāng)庫(kù)并且做一次沒(méi)有任何手工干涉的clean構(gòu)建
?向倉(cāng)庫(kù)中安裝一個(gè)構(gòu)件的新版本
?向倉(cāng)庫(kù)中大批導(dǎo)入構(gòu)件
?從倉(cāng)庫(kù)中大批導(dǎo)出構(gòu)件
?手動(dòng)備份倉(cāng)庫(kù),設(shè)置定時(shí)自動(dòng)備份任務(wù)
?
4. Maven倉(cāng)庫(kù)工具的選擇標(biāo)準(zhǔn)
理想的Maven倉(cāng)庫(kù)工具應(yīng)該:
?? 開(kāi)放源碼并且免費(fèi)
?? 提供管理工具
?? 提供倉(cāng)庫(kù)瀏覽器——最好是web瀏覽器而不是桌面應(yīng)用程序
?? 可以部署到標(biāo)準(zhǔn)web服務(wù)器中——例如Apache或Tomcat
?? 創(chuàng)建、編輯、刪除子庫(kù)的能力
?? 批量導(dǎo)入/導(dǎo)出的工具,用來(lái)向構(gòu)件庫(kù)或從構(gòu)件庫(kù)移動(dòng)構(gòu)件
?? 訪問(wèn)控制工具和匿名只讀訪問(wèn)
?? 安裝和使用簡(jiǎn)單
?? 備份功能
?? 問(wèn)題追蹤,論壇或其他獨(dú)立的信息來(lái)源
?? 活躍的社區(qū)/開(kāi)發(fā)者,這樣產(chǎn)品才能改進(jìn),bug才能修正
?
5. 不同Maven倉(cāng)庫(kù)工具的比較
一些流行且免費(fèi)的Maven倉(cāng)庫(kù)工具有:
標(biāo)準(zhǔn)Maven代理codehaus—— http://maven-proxy.codehaus.org/
Dead simple Maven Proxy (DSMP) - http://www.pdark.de/dsmp/
Proximity - http://proximity.abstracthorizon.org/
Artifactory - http://www.jfrog.org/sites/artifactory/latest/
?
下面列出了一個(gè)比較:
?
| ? | codehaus | DSMP | Proximity | Artifactory |
| 管理工具 | 否 | 基本 | 是 | 是 |
| 構(gòu)件庫(kù)瀏覽器 | 基本 | 否 | 是 | 是 |
| 部署到標(biāo)準(zhǔn)Web服務(wù)器 | 是(不可配置) | 否 | ?是 | ?是(與Jetty綁定,支持Tomcat) |
| 子庫(kù)管理 | ?是 | ?是 | ?是 | ?是 |
| 批量導(dǎo)入/導(dǎo)出構(gòu)件 | 否 | 否 | 否 | ?是 |
| 安裝使用簡(jiǎn)單 | ?是 | 是(從代碼構(gòu)建) | ?是 | 是(AJAX界面) |
| 備份功能 | 否 | 否 | 否 | ?是(使用quartz和cron表達(dá)式) |
| 問(wèn)題追蹤 | ?JIRA,IRC | ? | ?Wiki issues Tracker | ?Jira issues Tracker(良好的在線文檔) |
?
研究過(guò)以上所有產(chǎn)品之后得出結(jié)論,Artifactory 擁有我們要的所有標(biāo)準(zhǔn)。Proximity看樣子也有許多我們要的特性,我們將著眼于Artifactory 的使用。
關(guān)于Artifactory 的其他方面:
?符合我們的需求
?Apache 2.0 許可
?運(yùn)行于JDK 1.6和Tomcat 6。Artifactory以‘war’文件形式部署到Tomcat
?使用Derby數(shù)據(jù)庫(kù)來(lái)存儲(chǔ)構(gòu)件,數(shù)據(jù)以一個(gè)已發(fā)布的知名的格式存儲(chǔ)
?所有構(gòu)件可以被批量導(dǎo)出到本地庫(kù)然后導(dǎo)入到其他庫(kù),因而易于將構(gòu)件從一個(gè)倉(cāng)庫(kù)工具移到另一個(gè),它也使得Maven庫(kù)的升級(jí)非常容易
?兼容Java Content Repository 標(biāo)準(zhǔn)(JSR-170)。
?使用Lucene作為搜索引擎,倉(cāng)庫(kù)可以被索引和重新索引
?Ajax界面
?易于定制界面
?使用JIRA作為問(wèn)題追蹤系統(tǒng)
?
6. 設(shè)置Maven倉(cāng)庫(kù)
?
6.1 軟件需求
Artifactory——從http://www.jfrog.org/sites/artifactory/latest/下載和安裝,當(dāng)前最新版本是1.2.1-rc1,Artifactory是一個(gè)可以被安裝到Tomcat中去的Web應(yīng)用程序
JDK 1.6 – 更多信息請(qǐng)參閱http://www.jfrog.org/sites/artifactory/latest/install.html
Tomcat 6
?
6.2 目錄結(jié)構(gòu)
下載和解壓artifactory。目錄結(jié)構(gòu)如下:
?
?
這些目錄是:
backup —— 倉(cāng)庫(kù)的備份,可以使用cron表達(dá)式設(shè)置備份策略,quartz定時(shí)調(diào)度程序在指定的時(shí)間里運(yùn)行備份任務(wù),備份時(shí)間間隔在‘ARTIFACTORY_INSTALLATION_FOLDER>/etc/artifactory.config.xml’文件中指定
bin ——內(nèi)置jetty 服務(wù)器的運(yùn)行批處理文件
data —— 包含derby數(shù)據(jù)庫(kù)文件,如果你想以一個(gè)空的構(gòu)件庫(kù)開(kāi)始,可以刪除這個(gè)目錄中的所有內(nèi)容,在全新的artifactory 安裝中,這個(gè)目錄是空的。
etc —— artifactory 的配置文件,有‘a(chǎn)rtifactory.config.xml’ 、‘jetty.xml ‘和‘log4j.,properties’
lib —— 包含所有依賴的jar文件
logs —— 日志文件
webapps —— 包含war文件,它可以被拷貝到Tomcat中安裝。
?
6.2 在Tomcat 6中部署
部署‘<ARTIFACTORY_INSTALLATION_FOLDER>/webapp’目錄中的war文件到 ‘<TOMCAT_INSTALLATION_FOLDER>/webapps’目錄中,在jdk1.6和Tomcat 6環(huán)境下不需要改變tomcat的配置,Tomcat 6會(huì)檢測(cè)并部署它。
當(dāng)這個(gè)Web應(yīng)用程序被部署的時(shí)候,需要這些信息:
保存構(gòu)件的數(shù)據(jù)庫(kù)的位置
artifactory 的xml配置文件的位置
備份目錄的位置
可以在一個(gè)配置文件中指定所有3個(gè)信息,在Tomcat啟動(dòng)期間我們只需要指定artifactory的安裝目錄,artifactory會(huì)計(jì)算出其余的信息。可選的方法是使用jdbc設(shè)置好derby數(shù)據(jù)庫(kù)的連接并且在Web應(yīng)用程序中配置好artifactory (通過(guò)在Web應(yīng)用程序中包含artifactory.config.xml文件)。不管怎樣,這個(gè)方法是簡(jiǎn)單的。
artifactory 安裝目錄的位置可以被設(shè)置為一個(gè)環(huán)境變量,在Linux中,用‘.bash’來(lái)輸出artifactory 安裝目錄的位置的腳本是:
?
Java代碼 ?
export?JAVA_OPTS?=?-Dartifactory.home=/home/amangat/artifactory-1.2.1-rc1?? export JAVA_OPTS = -Dartifactory.home=/home/amangat/artifactory-1.2.1-rc1
?
在Windows中,可以添加到Tomcat啟動(dòng)選項(xiàng)中:
?
?
6.3 設(shè)置Maven倉(cāng)庫(kù)
建議的方法是在我們的Maven倉(cāng)庫(kù)中創(chuàng)建3個(gè)庫(kù)(或子庫(kù)),它們是:
內(nèi)部私有倉(cāng)庫(kù)private-internal-repository:這個(gè)倉(cāng)庫(kù)包含僅在團(tuán)隊(duì)內(nèi)使用的構(gòu)件,它們由開(kāi)發(fā)者手動(dòng)上傳,這個(gè)倉(cāng)庫(kù)不與ibiblio 中的遠(yuǎn)程倉(cāng)庫(kù)同步,因?yàn)檫@個(gè)倉(cāng)庫(kù)(或子倉(cāng)庫(kù))中的構(gòu)件是團(tuán)隊(duì)私有的。
第三方庫(kù)3rd-party:這個(gè)倉(cāng)庫(kù)包含公有的但不在ibiblio服務(wù)器上的構(gòu)件,例如,最新版本的尚不在ibiblio的組件或jdbc驅(qū)動(dòng)。這個(gè)倉(cāng)庫(kù)不與ibiblio 同步,因?yàn)閕biblio 沒(méi)有這些jar。
Ibiblio 緩存Ibiblio-cache:這個(gè)倉(cāng)庫(kù)與ibiblio 倉(cāng)庫(kù)同步,它是ibiblio 上的構(gòu)件的緩存。
?
設(shè)置這三個(gè)倉(cāng)庫(kù),需要修改<ARTIFACTORY_INSTALLATION_FOLDER>/etc/artifactory.config.xml’中的配置:
?
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">??????????????????<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>?? <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.0http://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>
?
?
啟動(dòng)Tomcat并且輸入 http://localhost:8080/artifactor
下面是artifactory的首頁(yè)面:
?
?
以用戶名admin和密碼password登錄,點(diǎn)擊瀏覽倉(cāng)庫(kù)的鏈接,你可以查看倉(cāng)庫(kù)的內(nèi)容。
?
?
7.配置Maven以使用新的倉(cāng)庫(kù)
?
7.1 配置Maven的settings.xml 文件
Maven使用位于‘~/.m2/settings.xml’目錄的settings.xml文件來(lái)獲取Maven倉(cāng)庫(kù) ,如果沒(méi)有在該文件中指定倉(cāng)庫(kù),Maven默認(rèn)使用ibiblio.org上的倉(cāng)庫(kù), settings.xml文件必須被修改以使用新的倉(cāng)庫(kù):
?
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>?? <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>
?
?
7.2 使用pom.xml配置Maven
也可以在項(xiàng)目的pom.xml文件中設(shè)置倉(cāng)庫(kù),下面是pom.xml范例文件:
?
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>?? <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>
?
?
7.3 使用Maven構(gòu)件倉(cāng)庫(kù)構(gòu)建項(xiàng)目
在構(gòu)建Maven項(xiàng)目的時(shí)候,所有的構(gòu)件庫(kù)都會(huì)從新的倉(cāng)庫(kù)下載,控件臺(tái)會(huì)顯示下載的過(guò)程:
?
用瀏覽器登錄到新的構(gòu)件倉(cāng)庫(kù),你會(huì)發(fā)現(xiàn)artifactory 已經(jīng)下載并緩存了ibiblio上的構(gòu)件。
?
?
7.4 安裝構(gòu)件到構(gòu)件倉(cāng)庫(kù)
可以通過(guò)Web界面或Maven命令行安裝構(gòu)件,通過(guò)Web界面來(lái)安裝更簡(jiǎn)單更快,并且不需要修改任何配置。通過(guò)命令行安裝需要修改settings.xml配置文件,可以在其他腳本中使用。
?
7.4.1 通過(guò)Web界面安裝構(gòu)件
?
安裝步驟如下:
1. 上傳要部署的構(gòu)件(‘jar’ 文件 或 ‘pom’ 文件)
?
2. 如果你上傳的是jar文件,Artifactory會(huì)為它創(chuàng)建pom文件 。上傳的時(shí)候你可以指定上傳到哪個(gè)倉(cāng)庫(kù)。
?
?
3. 上傳完后,上傳的構(gòu)件與artifactory 自動(dòng)創(chuàng)建的pom文件一起在倉(cāng)庫(kù)中出現(xiàn)。
?
?
7.4.1 能過(guò)Maven命令行安裝構(gòu)件
當(dāng)用‘mvn clean install’ 命令的時(shí)候,Maven僅僅打包和安裝構(gòu)件到本地倉(cāng)庫(kù),要把它安裝到APH內(nèi)部倉(cāng)庫(kù)中,我們必須在settings.xml中添加一條額外的配置:
?
Java代碼 ?
<settings> ????????<servers> ??????????????<server> ????????????????????<id>organisation-internal</id> ????????????????????<username>admin</username> ????????????????????<password>password</password> ??????????????</server> ????????</servers> ??</settings>?? <settings><servers><server><id>organisation-internal</id><username>admin</username><password>password</password></server></servers>
</settings>
?
?
安裝構(gòu)件到內(nèi)部Maven倉(cāng)庫(kù)的命令是:
?
Java代碼 ?
mvn?deploy:deploy-file?-DrepositoryId=organisation-internal?-Durl=http:??-DgroupId=test?-DartifactId=test?-Dversion=1.1?-Dpackaging=jar?-Dfile=target/test-1.1.jar?? mvn deploy:deploy-file -DrepositoryId=organisation-internal -Durl=http://localhost:8080/artifactory/private-internal-repository
-DgroupId=test -DartifactId=test -Dversion=1.1 -Dpackaging=jar -Dfile=target/test-1.1.jar
?
?
repositoryId必須與settings.xml中定義的服務(wù)器ID相匹配,url必須包含構(gòu)件將要被安裝到的倉(cāng)庫(kù)的名稱。
?
新的構(gòu)件會(huì)在倉(cāng)庫(kù)中出現(xiàn),并且artifactory 會(huì)自動(dòng)為我們創(chuàng)建pom文件。
?
8. Artifactory 的其他特性
?
8.1 備份構(gòu)件倉(cāng)庫(kù)
備份策略在 <ARTIFACTORY_INSTALLATION_FOLDER>/etc/artifactory.config.xml中指定,使用cron表達(dá)式來(lái)指定定時(shí)備份任務(wù),配置備份任務(wù)的元素在下面的代碼清單中用高亮顯示出來(lái)了
?
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">????????????<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>?? <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.0http://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>
?
?
備份文件存儲(chǔ)在‘<ARTIFACTORY_INSTALLATION_FOLDER>/backups’目錄,備份文件的格式與開(kāi)發(fā)者機(jī)器上的本地倉(cāng)庫(kù)一致,這使得要移植倉(cāng)庫(kù)內(nèi)容到其他Maven倉(cāng)庫(kù)工具中時(shí)非常容易。
?
8.2 其他特性
通過(guò)Web界面刪除構(gòu)件
通過(guò)Web界面搜索構(gòu)件
批量導(dǎo)入/導(dǎo)出倉(cāng)庫(kù)中的所有構(gòu)件
如果不要求使用Tomcat,可以使用內(nèi)置的jetty服務(wù)器
?
9. 結(jié)論
內(nèi)部私有Maven倉(cāng)庫(kù)加快構(gòu)建的過(guò)程并且使clean構(gòu)建更簡(jiǎn)單,它還幫助避免不同構(gòu)件版本的沖突。
在這4款通用的Maven構(gòu)件倉(cāng)庫(kù)工具中,看樣子Artifactory 是比較好的產(chǎn)品。
Artifactory使得設(shè)置Maven倉(cāng)庫(kù)變得簡(jiǎn)單;它提供了一個(gè)好的Maven倉(cāng)庫(kù)工具應(yīng)該實(shí)現(xiàn)的所有功能;團(tuán)隊(duì)不會(huì)被鎖定在這個(gè)工具上,因?yàn)榭梢匀菀椎匾浦矀}(cāng)庫(kù)內(nèi)容到其他倉(cāng)庫(kù)工具上;對(duì)于不知道Maven倉(cāng)庫(kù)如何工作的人來(lái)說(shuō),Web界面使得他們能很容易地使用倉(cāng)庫(kù)。
?
?
查看英文原文
- 設(shè)置Maven組件庫(kù).rar (225.4 KB)
- 描述: 下載Word版
- 下載次數(shù): 567
?
總結(jié)
以上是生活随笔為你收集整理的用Artifactory管理内部Maven仓库的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。