如何构建可变大小的数组?_真正不可变的构建

如何构建可变大小的数组?

几年后,有时会发生某个应用程序足够稳定以致进入Hibernate模式的情况。 尽管它已被使用和有用,但它没有任何变化,它可以愉快地运行。 然后,过了一会儿,有人决定再次添加一些新功能。 除了找到源代码之类的简单事情之外,最重要的事情之一就是能够构建应用程序。 尽管看似微不足道,但仍有一些事情要考虑。 以下是有关如何使应用程序可以永久构建的一些建议。

我将以Maven为例,但以下建议可应用于任何构建工具。

不可变的插件版本

对于依赖关系,Maven需要设置版本。 对于插件,Maven不允许指定它。 在这种情况下,它将获取最新的。

尽管始终使用最新版本可能会有所帮助,但它可能会破坏现有行为。

规则1始终明确设置插件版本。 这包括在构建期间使用的所有插件,即使未配置它们,例如maven-surefire-plugin。

签入构建工具

可能出现的第二个问题是构建工具本身。 用来构建应用程序的Maven版本是什么? 使用其他版本构建应用程序可能无法正常工作。 更糟糕的是,以与预期的副作用稍有不同的方式构建应用程序。

因此,必须将构建工具保存在应用程序的源代码中。 在Maven生态系统中,这可以使用Maven包装器来完成。

规则2获取包装器将其与常规资源一起检查并用于每个构建

签入JVM选项

当使用MVN_OPTS环境变量调整JVM选项时,将发生最后一步。 它可用于初始化构建的最大内存量, 例如 -XmX或将系统属性传递给构建, 例如 -Dmy.property=3 。 此类参数应在.mvn/jvm.config文件中设置,并在应用程序源中检入,而不是使用MVN_OPTS环境变量。 请注意,此功能自Maven 3.3.1起可用。

规则3通过.mvn / jvm.config文件以及常规源检入JVM构建选项

检入CI构建文件

与连续集成服务器相关的构建文件也应被检入。 对于某些人-Travis CI,GitLab等,这是一个非常标准的做法。 对于其他人-詹金斯(Jenkins),这是一个全新的功能。

规则4沿常规源检入CI服务器特定的构建文件。

很高兴有

上述步骤试图确保尽可能多的东西是不变的。 虽然可以设置Java代码的版本和生成的字节码的版本( maven-compiler-plugin sourcetarget配置参数),但不能设置的一件事是JDK本身。

为了在整个应用程序生命周期内保持不变,建议指定确切的JDK。 反过来,这在很大程度上取决于确切的连续集成服务器。 例如,Travis CI允许在构建文件中本地使用它,而Jenkins可能需要使用Docker映像

结论

确保将来能够构建您的应用程序并不是一项艰巨的任务。 但是,它将在将来产生巨大的变化。 遵循上述规则,经过长时间Hibernate后,您能够构建应用的机会将大大增加。

翻译自: https://blog.frankel.ch/truly-immutable-builds/

如何构建可变大小的数组?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值