gpt4 book ai didi

java - ant build过程中修改代码的最佳实践

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:51:41 25 4
gpt4 key购买 nike

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

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

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

  1. 使用 <replace>在类中的标记上

    此方法的问题是文件已更改,因此您必须在编译后用 <replaceregexp> 替换回标记...太丑了,我不想用正则表达式接触源代码。加上时间依赖性。

  2. 复制文件,对副本进行替换,编译副本,删除副本

    一个人必须注意顺序 - 原始类必须首先编译才能被副本覆盖。时间依赖性也很丑陋。

  3. 复制文件,替换原件上的token,编译,用副本替换染色的原件

    相同的时间依赖性问题,除非嵌入到编译目标中。这也很丑陋,因为我们所有的构建文件都使用相同的导入编译目标。

  4. 在构建脚本中从头开始创建文件/将文件存储在源路径之外

    是对前三个的改进,因为没有时间依赖性,但编译器/IDE 非常不高兴,因为它忘记了类。红色标记丑得令人不安。

您对替代方案有何看法?

对此有什么最佳实践吗?

我当然希望我错过了一个非常理智的方法。

谢谢

编辑我们最终使用 list 将内部版本号和系统版本存储在 Implementation-Version 中。属性,unsing 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已经做了一半(见第二个例子)。

关于java - ant build过程中修改代码的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5981257/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com