我想從它使用gradle這個建設項目我的Java項目中訪問構建信息。我需要訪問的信息是由teamcity生成的內部版本號,生成vcs編號等。這些很容易通過maven訪問,並使用maven-replacer插件,這些插件可以在屬性文件中替換。首先,有沒有其他方法可以達到同樣的效果?然後,如何做到這一點? :)搖籃:訪問建立信息
我想盡了辦法共享here,但我總是空的版本號。
在行家我放置在屬性文件(project.properties)項目以保持關鍵值對連鍵是象
project.groupId,project.artifactId,project.version, 那些項目信息maven.build.timestamp
我希望使用gradle訪問相同的構建信息。 。聚甲醛看起來象下面這樣:
<!-- Write project version number to file -->
<plugin>
<groupId>com.google.code.maven-replacer-plugin</groupId>
<artifactId>maven-replacer-plugin</artifactId>
<version>1.3.8</version>
<executions>
<execution>
<phase>prepare-package</phase>
<goals>
<goal>replace</goal>
</goals>
</execution>
</executions>
<configuration>
<includes>
<!-- replace the token in this file -->
<include>target/classes/project.properties</include>
</includes>
<replacements>
<replacement>
<token>PROJECT_GROUP</token>
<value>${project.groupId}</value>
</replacement>
<replacement>
<token>PROJECT_ARTIFACT</token>
<value>${project.artifactId}</value>
</replacement>
<replacement>
<token>PROJECT_VERSION</token>
<value>${project.version}</value>
</replacement>
<replacement>
<token>PROJECT_BUILD_DATE</token>
<value>${maven.build.timestamp}</value>
</replacement>
<replacement>
<token>BUILD_NUMBER</token>
<value>${build.number}</value>
</replacement>
</replacements>
</configuration>
</plugin>
什麼Maven的替代品插件不爲取代值對象的屬性,可以在Java應用程序中使用。
我需要使用gradle這個訪問相同的屬性。
在POM團隊市配置如下:
<ciManagement>
<system>Team City</system>
<url>http://teamcity.mycompany.com/teamcity/project.html?projectId=bt007
</url>
</ciManagement>
在build.gradle
文件,我定義如下任務:
task getProjectGroup << {
ext.projectGroup = System.getProperty("project.group")
println "Project Group: $projectGroup"
}
我得到執行此任務時的輸出如下:
:service:getProjectGroup
Project Group: null
BUILD SUCCESSFUL
如果你得到'null',你的TeamCity版本不會設置這個系統屬性,你也不能從Maven訪問它。在屬性文件中替換佔位符是配置'processResources'任務的問題(請參閱[Gradle Build Language Reference](http://gradle.org/docs/current/dsl/index.html)中的'Copy')。 –
我無法在上面的Maven POM中找到任何TeamCity屬性。 –
已經更新上面。還添加了團隊城市配置以完成問題。 – Aspirant