teamcity_TeamCity工件:HTTP,Ant,Gradle和Maven
teamcity
您可以通過(guò)幾種方式檢索TeamCity工件? 我說(shuō)有很多選擇 ! 如果您使用的是Java構(gòu)建工具,那么可以使用簡(jiǎn)單的HTTP請(qǐng)求,Ant + Ivy,Gradle和Maven下載和使用TeamCity構(gòu)建配置產(chǎn)生的二進(jìn)制文件。 怎么樣? 繼續(xù)閱讀。構(gòu)建配置“ id”
在檢索任何構(gòu)建配置的工件之前,您需要知道其"id" ,當(dāng)瀏覽相應(yīng)的配置時(shí),可以在瀏覽器中看到它的"id" 。 讓我們以teamcity.jetbrains.com上托管的IntelliJ IDEA社區(qū)版項(xiàng)目為例。 它的“ Community Dist”構(gòu)建配置提供了許多我們將要使用的工件。 從下面的屏幕截圖可以看出,其"id"為"bt343" 。
HTTP
匿名HTTP訪問(wèn)可能是獲取TeamCity工件的最簡(jiǎn)單方法,URL是:
http://server/guestAuth/repository/download/<btN>/<buildNumber>/<artifactName>
為了滿足該要求,需要指定3個(gè)參數(shù):
| btN | 如上所述,構(gòu)建配置"id" 。 |
| buildNumber | 內(nèi)部版本號(hào)或預(yù)定義常量之一: "lastSuccessful" , "lastPinned"或"lastFinished" 。 例如,您可以從上一次成功的 TeamCity執(zhí)行中下載定期的IDEA構(gòu)建。 |
| artifactName | 工件名稱,例如"ideaIC-118.SNAPSHOT.win.zip" 。 也可以采用"artifactName!archivePath"的形式來(lái)讀取存檔的內(nèi)容,例如IDEA的生成文件 。 您可以通過(guò)請(qǐng)求由TeamCity生成的特殊"teamcity-ivy.xml"工件來(lái)獲取在特定構(gòu)建中生成的所有工件的列表。 |
螞蟻+常春藤
發(fā)布到TeamCity的所有工件都帶有"teamcity-ivy.xml" Ivy描述符,從而有效地使TeamCity成為Ivy存儲(chǔ)庫(kù)。 下面的代碼將IDEA發(fā)行版中的"core/annotations.jar" "download/ivy"到"download/ivy"目錄中:
"ivyconf.xml"
<ivysettings><settings defaultResolver='teamcity-repo'/><resolvers><url name='teamcity-repo' alwaysCheckExactRevision='yes' checkmodified='true'><ivy pattern='http://teamcity.jetbrains.com/guestAuth/repository/download/[module]/[revision]/teamcity-ivy.xml'/><artifact pattern='http://teamcity.jetbrains.com/guestAuth/repository/download/[module]/[revision]/[artifact](.[ext])'/></url></resolvers> </ivysettings>"ivy.xml"
<ivy-module version="1.3"><info organisation="com.jetbrains" module="idea"/><dependencies><dependency org="org" name="bt343" rev="lastSuccessful"><include name="core/annotations" ext="jar"/></dependency></dependencies> </ivy-module>"build.xml"
<project name="teamcity-download" default="download" xmlns:ivy="antlib:org.apache.ivy.ant"><target name="download" xmlns:ivy="antlib:org.apache.ivy.ant"><taskdef uri="antlib:org.apache.ivy.ant" resource="org/apache/ivy/ant/antlib.xml"/><ivy:configure file = "${basedir}/ivyconf.xml"/><ivy:resolve file = "${basedir}/ivy.xml"/><ivy:retrieve pattern = "${basedir}/download/ivy/[artifact].[ext]"/></target> </project>Gradle
與上面的Ivy示例相同,由于其內(nèi)置的Ivy支持,使用Gradle檢索TeamCity工件相當(dāng)容易。 除了使用自定義Gradle任務(wù)將相同的jar文件"download/gradle"到"download/gradle"目錄外,我們還可以將其用作Java類的"compile"依賴項(xiàng),并導(dǎo)入IDEA的@NotNull批注:
"Test.java"
import org.jetbrains.annotations.NotNull;public class Test {private final String data;public Test ( @NotNull String data ){ this.data = data; } }"build.gradle"
apply plugin: 'java'repositories {ivy {ivyPattern 'http://teamcity.jetbrains.com/guestAuth/repository/download/[module]/[revision]/teamcity-ivy.xml'artifactPattern 'http://teamcity.jetbrains.com/guestAuth/repository/download/[module]/[revision]/[artifact](.[ext])'} }dependencies {compile ( 'org:bt343:lastSuccessful' ){artifact {name = 'core/annotations'type = 'jar'}} }task copyJar( type: Copy ) {from configurations.compileinto "${ project.projectDir }/download/gradle" }Maven
將Maven與TeamCity結(jié)合使用的最佳方法是設(shè)置Artifactory存儲(chǔ)庫(kù)管理器及其TeamCity插件 。 這樣,您的構(gòu)建所生成的工件就可以很好地部署到Artifactory,并且可以像從任何其他遠(yuǎn)程Maven存儲(chǔ)庫(kù)中一樣從那里進(jìn)行提供。
但是,您仍然可以在Maven中使用TeamCity工件,而無(wú)需任何其他設(shè)置。 "ivy-maven-plugin"橋接了兩個(gè)世界,使您可以將Ivy解析器插入Maven的運(yùn)行時(shí)環(huán)境,下載所需的依賴項(xiàng),并將它們添加到相應(yīng)的"compile"或"test"作用域中。
讓我們從Gradle示例中編譯相同的Java源代碼,但是這次使用Maven。
"pom.xml"
<?xml version="1.0" encoding="UTF-8"?><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.0http://maven.apache.org/maven-v4_0_0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.test</groupId><artifactId>maven</artifactId><packaging>jar</packaging><version>0.1-SNAPSHOT</version><name>[${project.groupId}:${project.artifactId}:${project.version}]</name><description>Ivy Maven plugin example</description><build><plugins><plugin><groupId>com.github.goldin</groupId><artifactId>ivy-maven-plugin</artifactId><version>0.2.5</version><executions><execution><id>get-ivy-artifacts</id><goals><goal>ivy</goal></goals><phase>initialize</phase><configuration><ivyconf>${project.basedir}/ivyconf.xml</ivyconf><ivy>${project.basedir}/ivy.xml</ivy><dir>${project.basedir}/download/maven</dir><scope>compile</scope></configuration></execution></executions></plugin></plugins></build> </project>當(dāng)該插件運(yùn)行時(shí),它使用我們之前看到的相同的"ivyconf.xml"和"ivy.xml"文件解析IDEA注釋工件,將其復(fù)制到"download/maven"目錄并添加到"compile"作用域,因此我們的Java源代碼可以編譯。
GitHub項(xiàng)目
我的GitHub項(xiàng)目中提供了所有演示的示例。 隨意克隆并運(yùn)行它:
git clone git://github.com/evgeny-goldin/teamcity-download-examples.git cd teamcity-download-examples chmod +x run.sh dist/ant/bin/ant gradlew dist/maven/bin/mvn ./run.sh資源資源
以下鏈接可以為您提供更多詳細(xì)信息:
- TeamCity –訪問(wèn)構(gòu)建工件的模式
- TeamCity –通過(guò)HTTP訪問(wèn)服務(wù)器
- TeamCity –使用Ant Build腳本配置工件依賴項(xiàng)
- Gradle –常春藤倉(cāng)庫(kù)
- "ivy-maven-plugin"
就這樣,您已經(jīng)看到了–可以使用以下四種方式之一完美地訪問(wèn)TeamCity工件:直接HTTP訪問(wèn),Ant + Ivy,Gradle或Maven。 您使用哪一個(gè)? 讓我知道!
參考:從Goldin ++博客的JCG合作伙伴 Evgeny Goldin 使用HTTP,Ant,Gradle和Maven獲取TeamCity工件 。
翻譯自: https://www.javacodegeeks.com/2012/05/teamcity-artifacts-http-ant-gradle-and.html
teamcity
總結(jié)
以上是生活随笔為你收集整理的teamcity_TeamCity工件:HTTP,Ant,Gradle和Maven的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 佛山美食排行榜前十(广东佛山最有名的十大
- 下一篇: 测试双打:模拟,假人和存根