TeamCity工件:HTTP,Ant,Gradle和Maven

您可以通過幾種方式檢索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>

搖籃

與上面的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與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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/372572.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/372572.shtml
英文地址,請注明出處:http://en.pswp.cn/news/372572.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

linux中hadoop命令大全,hadoop常用命令

啟動Hadoop進入HADOOP_HOME目錄。執行sh bin/start-all.sh關閉Hadoop進入HADOOP_HOME目錄。執行sh bin/stop-all.sh1、查看指定目錄下內容hadoop dfs –ls [文件目錄]eg: hadoop dfs –ls /user/wangkai.pt2、打開某個已存在文件hadoop dfs –cat [file_path]eg:hadoop dfs -ca…

Uber從Postgres切換到MySQL

Uber工程師在官方博客上描述了他們為什么要從 Postgres 切換到 MySQL 數據庫。Uber的早期架構是由 Python編寫的后端應用構成&#xff0c;使用了 Postgres 數據庫。但此后&#xff0c;Uber的架構發生了顯著的改變&#xff0c;轉變到了微服務模型和新的數據平臺。以前他們使用 P…

AutoCAD如何方便截圖放到Word文檔,改成白底黑字

將模型視圖切換到布局2即可 比如下圖所示的效果 先回到模型視圖把所有線條顏色都改成白色&#xff0c;然后添加適當的標注&#xff08;比如要受力分析&#xff0c;則在CAD中繪制箭頭也很方便的&#xff09;&#xff0c;文字說明。然后切換到布局2就OK 可以截圖了。 轉載于:http…

在Hotspot JVM中跟蹤過多的垃圾回收

由于內存泄漏或其他內存問題&#xff0c;經常導致應用程序凍結&#xff0c;僅使垃圾收集器&#xff08;GC&#xff09;進程運行失敗&#xff0c;試圖釋放一些空間。 直到看門狗&#xff08;或沮喪的管理員&#xff09;重新啟動應用程序并且問題從未解決之前&#xff0c;這種情況…

linux 網絡在線升級,linux在線升級

//前提信息&#xff1a;1.系統分區信息SPI-Flash:[0] 0x000000000000-0x000000020000 : "SPL,128KB"[1] 0x000000020000-0x0000000e0000 : "U-Boot,768KB"[2] 0x0000000e0000-0x000000100000 : "U-Boot Env,128KB"[3] 0x000000100000-0x00000020…

XML反序列化出錯,XML 文檔(2, 2)中有錯誤

XML轉換為實體類的錯誤處理方案 一.錯誤描述&#xff1a; XML反序列化出錯&#xff0c;XML 文檔(2, 2)中有錯誤二.解決方案&#xff1a; 在實體類的字段要加上XmlElement屬性三.具體實現: 1.XML文檔 <EVENT_INSTANCE><EventType>ALTER_TABLE</EventType><…

iOS--支付寶環境集成

1.下載支付寶SDK以及Demo https://doc.open.alipay.com/doc2/detail?treeId54&articleId103419&docType1 2.新建文件夾“AliSDK”&#xff0c;將壓縮包內的文件拷貝到該文件夾下&#xff0c;完成后如下圖所示&#xff1a; 3.將文件夾拷貝到項目中&#xff0c; 4.執行完…

再見,再見,5 * 60 * 1000 //五分鐘,再見,再見

在這篇文章中&#xff0c;我將討論一個在1.5版中首次引入的類&#xff0c;我使用了太多&#xff0c;但是與一些人交談&#xff0c;他們說他們不知道它的存在。 此類是TimeUnit 。 TimeUnit類表示給定粒度單位的持續時間&#xff0c;還提供了轉換為不同單位的實用方法以及執行計…

windows如何調用Linux的API,Windows和Native API中的系統調用?

最近&#xff0c;我在* NIX操作系統中使用了很多匯編語言。我想知道Windows域。Linux中的調用約定&#xff1a;mov $SYS_Call_NUM, %eaxmov $param1 , %ebxmov $param2 , %ecxint $0x80而已。這就是我們應該如何在Linux中進行系統調用。linux中所有系統調用的參考&#xff1a;關…

maven生命周期和插件

maven生命周期和插件 生命周期 maven的生命周期有三套&#xff0c;互相獨立。每個生命周期含有不同階段&#xff0c;常用如下 clean 清理項目 pre-clean 執行清理前需要完成的工作clean 清理上一次構建生成的文件post-clean 執行清理后需要完成的工作default 構建項目 validate…

Java EE 6測試第二部分– Arquillian和ShrinkWrap簡介

在Java EE 6測試的第一部分中&#xff0c;我簡要介紹了使用Glassfish嵌入式容器的EJB 3.1 Embeddable API&#xff0c;以演示如何啟動該容器&#xff0c;如何在項目類路徑中查找bean以及運行非常簡單的集成測試。 這篇文章重點介紹Arquillian和ShrinkWrap以及為什么它們是用于企…

linux內存分配堆棧數據段代碼段,linux – LD_PRELOAD堆棧和數據段內存分配

你好,我正在編寫一個Linux模塊(基于名為“Ccontrol”的GitHub項目)來創建緩存分區(a.k.a頁面著色),以減輕定時側通道攻擊(用于防止Prime Probe等攻擊).我已經使用LD_PRELOAD系統env變量來覆蓋所有malloc(),calloc()和free()調用,并用顏色感知調用替換它們.現在我正在尋找顏色堆…

【騰訊Bugly干貨分享】Android內存優化總結實踐

本文來自于騰訊Bugly公眾號&#xff08;weixinBugly&#xff09;&#xff0c;未經作者同意&#xff0c;請勿轉載&#xff0c;原文地址&#xff1a;https://mp.weixin.qq.com/s/2MsEAR9pQfMr1Sfs7cPdWQ 導語 智能手機發展到今天已經有十幾個年頭&#xff0c;手機的軟硬件都已經發…

以編程方式向OpenJPA注冊實體類型

我剛剛開始為Isis開發 OpenJPA對象庫 。 在一般情況下&#xff0c;可以在persistence.xml文件中注冊實體類型。 但是&#xff0c;Isis是一個框架&#xff0c;可以構建自己的元模型&#xff0c;并且可以自行確定哪些類構成實體。 因此&#xff0c;我不想強??迫開發人員重復自己…

linux redis客戶端,Redisson 3.4.0和2.9.0發布,Redis客戶端

Redisson 3.4.0和2.9.0發布&#xff0c;Redis客戶端發布時間:2017-04-27 09:12:16來源:紅聯作者:baihuoRedisson于2017年4月26日發布了3.4.0和2.9.0版本Redisson是架設在Redis基礎上的一個Java駐內存數據網格(In-Memory Data Grid)。充分的利用了Redis鍵值數據庫提供的一系列優…

LeetCode 349 Intersection of Two Arrays

Given two arrays, write a function to compute their intersection. Example: Given nums1 [1, 2, 2, 1], nums2 [2, 2], return [2]. 思路&#xff1a; 利用ArrayList的contains(Object o)方法進行交集的查詢。 解法&#xff1a; 1 import java.util.ArrayList;2 3 publi…

shell腳本1——變量 $、read、``

與Shell變量相關的幾個命令&#xff1a; 變量只在當前Shell中生效. source 這個命令讓腳本影響他們父Shell的環境&#xff08;. 可以代替source命令&#xff09; export 這個命令可以讓腳本影響其子Shell的環境 () unset 從環境中刪除變量 其他幾個與變量有關的命令&#xff1…

令人印象深刻的第一個Apache Camel版本

為了準備下周的CamelOne會議&#xff0c;我花了一些時間回顧一下Apache Camel項目的歷史。 因此&#xff0c;除其他外&#xff0c;我了解了Apache Camel的第一個正式1.0版本 。 Apache Camel 1.0 – 5年前 我看的越多&#xff0c;這個版本的事實給我留下了深刻的印象。 現在您…

Linux禁用user01賬戶,Linux?管理用戶?useradd

創建用戶、設置密碼、修改用戶、刪除用戶&#xff1a;useradd testuser 創建用戶testuseruseradd [選項]useradd 命令選項-u uid:指定新用戶的uid,默認用當前最大uid加1-g group:指定新用戶所在的組(私有組),該組必須存在-G group:指定新用戶的附加組-d dir:指定新用戶的自家目…

css小細節

1. 文字居中顯示 水平居中&#xff1a; text-align: center; 垂直居中&#xff1a; line-height: (height); 2.子元素相對于父元素的絕對布局。 父元素一定要 position: relative/absolute/fixed; 默認position 是static 轉載于:https://www.cnblogs.com/zcancandice/p/5…