微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java – 在ant构建期间进行代码修改的最佳实践

承认,这听起来并不是最佳做法,但让我解释一下.在构建期间,我们需要将构建号和系统版本粘贴到一个类中,该类的唯一目的是包含这些值并使它们可访问.

我们的第一个想法是使用系统属性,但由于部署环境的波动性(另一种说法是“系统管理员正在做奇怪的邪恶的令人毛骨悚然的东西”),我们希望对它们进行硬编码.

基本上我看到了在蚂蚁中实现它的4种可能性:

>使用< replace>在班上的一个令牌上

这种方法的问题是文件被更改,所以你必须在编译后用< replaceregexp>替换令牌…… sooo丑陋,我不想用正则表达式来触摸源代码.加上时间依赖性.
>复制文件,复制副本,编译副本,删除副本

一个人必须记住序列 – 必须先编译原始类才能被副本覆盖.时间依赖性也很难看.
>复制文件,替换原件上的令牌,编译,用副本替换染色的原件

除非嵌入在编译目标中,否则相同的时间依赖性问这也是丑陋的,因为我们所有的构建文件都使用相同的导入编译目标.
>在构建脚本中从头开始创建文件/将文件存储在源路径之外

由于没有时间依赖性,因此对前三个进行了改进,但编译器/ IDE非常不满意,因为它忽略了类.红色标记令人不安地丑陋.

您对替代方案有何看法?

对此有什么最佳做法吗?

我当然希望我错过了一个完美的方法.

谢谢

编辑
我们最终使用清单将构建号和系统版本存储在Implementation-Version属性中,取消了MyClass.class.getPackage().getImplementationVersion().我发现这个解决方案是 this thread的答案之一,由andersoj发表评论

解决方法

我认为更简单的方法是让您的Version.java类从JAR中包含的简单.properties文件中读取,并在Ant构建中的构建时生成此.properties文件.例如,只需生成
build.number = 142
build.timestamp = 5/12/2011 12:31

built-in <buildnumber> task in Ant已经完成了一半(见第二个例子).

原文地址:https://www.jb51.cc/java/124315.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐