我在build.gradle中定义了一个timestamp值,如下所示
build.gradle
def timestamp = new Date().format('yyyyMMddHHmm')
println "Timestamp:" + timestamp
springBoot {
mainClass = 'com.example.login.Application'
buildInfo {
properties {
additionalProperties = [
'timestamp': "${timestamp}"
]
}
}
}
.
.
.
字符串
现在我的build/resources/main/META-INF中的build-info.properties看起来像这样,
build.artifact=login
build.group=com.example
build.name=login
build.timestamp=202307111234
型
应用.属性
current.timestamp=@timestamp@
型
我尝试从AppFilter.java类的build-info属性中检索build.time,如下所示
public class AppFilter {
@Autowired
private BuildProperties buildProperties;
public AppFilter() {
}
public void doFilter(HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws IOException, ServletException {
String timestamp = buildProperties.get("build.timestamp");
System.out.println("Timestamp=>"+timestamp);
.
.
.
}
}
型
有没有一种方法可以将timestamp属性从build.gradle传递到application.properties,以便当前的.timestamp将具有来自我的gradle构建的timestamp值?
得到以下错误,
调试后出错
String timestamp = buildProperties[NullPointerException]....
型
我是新手。任何帮助都是感激的。
谢了,谢了
2条答案
按热度按时间smdncfj31#
以下是如何使用自己的replace来执行此操作:
字符串
我相信Groovy会是这样的:
型
因此,我建议使用Sping Boot 构建信息:
https://docs.spring.io/spring-boot/docs/current/gradle-plugin/reference/htmlsingle/#integrating-with-actuator.build-info
完成后,您可以注入
BuildProperties
bean以获取其值:https://docs.spring.io/spring-boot/docs/current/api/org/springframework/boot/info/BuildProperties.html
型
型
型
t40tm48m2#
将CopySpec更改为
expand(timestamp: timestamp)
并将属性文件更改为current.timestamp=$timestamp
传递给
expand()
的Map中的键应该是您要替换的令牌。@timestamp@
样式的令牌与ReplaceTokens
过滤器一起使用,如果您愿意,也可以使用它。详情请参见https://docs.gradle.org/current/userguide/working_with_files.html#sec:filtering_files。