teamcity_TeamCity工件:HTTP,Ant,Gradle和Maven
teamcity
您可以通過幾種方式檢索TeamCity工件? 我說有很多選擇 ! 如果您使用的是Java構建工具,那么可以使用簡單的HTTP請求,Ant + Ivy,Gradle和Maven下載和使用TeamCity構建配置產生的二進制文件。 怎么樣? 繼續閱讀。構建配置“ id”
在檢索任何構建配置的工件之前,您需要知道其"id" ,當瀏覽相應的配置時,可以在瀏覽器中看到它的"id" 。 讓我們以teamcity.jetbrains.com上托管的IntelliJ IDEA社區版項目為例。 它的“ Community Dist”構建配置提供了許多我們將要使用的工件。 從下面的屏幕截圖可以看出,其"id"為"bt343" 。
HTTP
匿名HTTP訪問可能是獲取TeamCity工件的最簡單方法,URL是:
http://server/guestAuth/repository/download/<btN>/<buildNumber>/<artifactName>
為了滿足該要求,需要指定3個參數:
| btN | 如上所述,構建配置"id" 。 |
| buildNumber | 內部版本號或預定義常量之一: "lastSuccessful" , "lastPinned"或"lastFinished" 。 例如,您可以從上一次成功的 TeamCity執行中下載定期的IDEA構建。 |
| artifactName | 工件名稱,例如"ideaIC-118.SNAPSHOT.win.zip" 。 也可以采用"artifactName!archivePath"的形式來讀取存檔的內容,例如IDEA的生成文件 。 您可以通過請求由TeamCity生成的特殊"teamcity-ivy.xml"工件來獲取在特定構建中生成的所有工件的列表。 |
螞蟻+常春藤
發布到TeamCity的所有工件都帶有"teamcity-ivy.xml" Ivy描述符,從而有效地使TeamCity成為Ivy存儲庫。 下面的代碼將IDEA發行版中的"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示例相同,由于其內置的Ivy支持,使用Gradle檢索TeamCity工件相當容易。 除了使用自定義Gradle任務將相同的jar文件"download/gradle"到"download/gradle"目錄外,我們還可以將其用作Java類的"compile"依賴項,并導入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結合使用的最佳方法是設置Artifactory存儲庫管理器及其TeamCity插件 。 這樣,您的構建所生成的工件就可以很好地部署到Artifactory,并且可以像從任何其他遠程Maven存儲庫中一樣從那里進行提供。
但是,您仍然可以在Maven中使用TeamCity工件,而無需任何其他設置。 "ivy-maven-plugin"橋接了兩個世界,使您可以將Ivy解析器插入Maven的運行時環境,下載所需的依賴項,并將它們添加到相應的"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>當該插件運行時,它使用我們之前看到的相同的"ivyconf.xml"和"ivy.xml"文件解析IDEA注釋工件,將其復制到"download/maven"目錄并添加到"compile"作用域,因此我們的Java源代碼可以編譯。
GitHub項目
我的GitHub項目中提供了所有演示的示例。 隨意克隆并運行它:
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資源資源
以下鏈接可以為您提供更多詳細信息:
- TeamCity –訪問構建工件的模式
- TeamCity –通過HTTP訪問服務器
- TeamCity –使用Ant Build腳本配置工件依賴項
- Gradle –常春藤倉庫
- "ivy-maven-plugin"
就這樣,您已經看到了–可以使用以下四種方式之一完美地訪問TeamCity工件:直接HTTP訪問,Ant + Ivy,Gradle或Maven。 您使用哪一個? 讓我知道!
參考:從Goldin ++博客的JCG合作伙伴 Evgeny Goldin 使用HTTP,Ant,Gradle和Maven獲取TeamCity工件 。
翻譯自: https://www.javacodegeeks.com/2012/05/teamcity-artifacts-http-ant-gradle-and.html
teamcity
總結
以上是生活随笔為你收集整理的teamcity_TeamCity工件:HTTP,Ant,Gradle和Maven的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 佛山美食排行榜前十(广东佛山最有名的十大
- 下一篇: 测试双打:模拟,假人和存根