Java 在基于Gradle的Spring Rest项目中添加提交到清单
我想在构建Java 在基于Gradle的Spring Rest项目中添加提交到清单,java,git,gradle,Java,Git,Gradle,我想在构建jar时将提交散列添加到清单中 背景如下: 我有一个基于gradle的项目,它具有Spring boot依赖项。这是一个RESTapi项目。这是我的假设:我尝试的所有插件都被Spring依赖项提供的buildJar任务覆盖 所以我的问题是, 如何通过在项目中定义一个非常简单的渐变任务,将提交哈希添加到清单中? 我已经知道如何使用以下任务打印最后一个哈希 task getHash { def p1 = 'git rev-parse HEAD'.execute() p1.w
jar
时将提交散列添加到清单中
背景如下:
我有一个基于gradle
的项目,它具有Spring boot
依赖项。这是一个REST
api项目。这是我的假设:我尝试的所有插件都被Spring
依赖项提供的buildJar
任务覆盖
所以我的问题是,
如何通过在项目中定义一个非常简单的渐变任务,将提交哈希添加到清单中?
我已经知道如何使用以下任务打印最后一个哈希
task getHash {
def p1 = 'git rev-parse HEAD'.execute()
p1.waitFor()
println p1.text
}
以下是build.gradle
详细信息:
buildscript {
ext {
springBootVersion = '2.0.5.RELEASE'
}
repositories {
mavenCentral()
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
}
}
apply plugin: 'java'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
group = 'com.foo.bar'
version = '0.0.4-SNAPSHOT'
sourceCompatibility = 1.8
repositories {
mavenCentral()
}
dependencies {
// Spring dependencies
compile('org.springframework.boot:spring-boot-starter-web')
//Clickhouse-jdbc
compile group: 'ru.yandex.clickhouse', name: 'clickhouse-jdbc', version: '0.1.40'
// Swagger
compile group: 'io.springfox', name: 'springfox-swagger2', version: '2.9.2'
compile group: 'io.springfox', name: 'springfox-swagger-ui', version: '2.9.2'
// https://mvnrepository.com/artifact/org.json/json
compile group: 'org.json', name: 'json', version: '20180813'
testCompile('org.springframework.boot:spring-boot-starter-test')
}
Spring boot提供了一个bootJar
扩展,可用于配置清单:
bootJar {
manifest {
attributes(
"GIT_REV": getHash()
)
}
}
您可以将getHash()
定义为构建脚本中的一个简单函数:
ext.getHash = {
def p1 = 'git rev-parse HEAD'.execute()
p1.waitFor()
return p1.text
}
参考:见
注意:这个简单的例子不应该是复制粘贴:你应该在构建阶段,而不是在配置阶段调用getHash()
方法。如果你使用SpringBoot gradle插件来生成胖jar,然后你可以使用bootJar
configuration扩展来配置这个胖jar的清单,见下面我的答案。效果很好!谢谢