![](/style/images/good.png)
![](/style/images/bad.png)
伸手: Java 有没有哪个注解可以在编译时插入当前时间,我想在代码里直接得到编译时间...
source link: https://www.v2ex.com/t/930978
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
搜了半天没搜到,只有伸手了
比如给类加上这个注解,会直接在类源码里面添加一个可以使用的静态字符串变量
或者给一个字符串变量加上这个注解,编译时自动注入一个值
不考虑使用配置文件 翻了翻 lombok ,似乎没有现成的,难不成要自己写一个编译期注解😂
感觉这种需求挺多的吧,一个 class 文件里面自带了编译时间,能省不少事
![]() |
sfc9982 4 小时 52 分钟前 将编译时间保存在 Manifest 文件中,然后从代码中读取 Manifest 里的时间戳?
|
![]() |
learningman 4 小时 50 分钟前 via Android 用 gradle 的话,写 task 在 build 之前 codegen 。
挺多这种插件的,比如 buildKonfig |
Azzsanjin 4 小时 38 分钟前 via Android 这应该和代码无关吧 得研究 jvm
|
![]() |
xiangyuecn 4 小时 30 分钟前 |
diagnostics 4 小时 24 分钟前 bytebuddy ,asm ,javassist ,看 CTW 就可以了,一般是改字节码
|
forgottencoast 3 小时 59 分钟前 自己写个脚本,生成时间戳文件,编译的时候顺带执行这个脚本。
这个应该比较容易实现吧。 |
![]() |
Achieve7 3 小时 30 分钟前 一般都是 字节码织入, 比如 asm javasssist. 可以看一下 spring-aop 的源码, 写的挺详细的
|
![]() |
ychost 3 小时 27 分钟前 Maven 插件搞一个就行了,别去卷 java APT 了,用 maven 插件或者 Gradle 插件更简洁,更快
|
![]() |
someonedeng 2 小时 52 分钟前 编译的时候脚本 sed 一下代码 改一下不就得了
|
weofuh 56 分钟前 如果只是修改一个源码文件里的某个变量,如:string version = "1.0" maven 编译时设置一个新的版本号 version = “1.1” ,那可以用 replacer 插件来实现,比如 com.google.code.maven-replacer-plugin:replacer
|
zhady009 43 分钟前 换个思路不要直接注入进 JVM 内部,从外部文件读取就好了
如果是 SpringBoot 项目可以读 build-info.properties |
![]() |
williamx 31 分钟前 @someonedeng +1 ,反正要写编译脚本,直接 sed 修改,懒得去研究各种编译框架。
|
ingxx 29 分钟前 JSR269 编译时修改语法树试试呢
|
![]() |
MakHoCheung 27 分钟前 Java 的 Annotation Processing Tool
|
![]() |
k9982874 18 分钟前 via Android 源码里面 public final String compileDate = "{COMPILE_DATE}";
maven 或 gradle 编译前执行 sed 替换指定文件里的{COMPILE_DATE},编译结束替换回{COMPILE_DATE}简单粗暴 |
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK