我想将JRE 6.0与我的java应用程序捆绑在一起。我的所有源代码都驻留在CVS中。我的客户将签出代码并自行构建。我应该将JRE存储在CVS中吗?
答案 0 :(得分:7)
我通常主张将大部分内容都放在源代码控制中,但这似乎有些过分。为什么?
答案 1 :(得分:4)
我不会将JDK或JRE放入源代码存储库中:
但我认为您真正的问题(实际上是您的用户组织的问题)是那些拒绝考虑升级JRE的IT人员:
编辑:还有一个法律问题,即从源代码存储库中“重新分发”JRE是否违反了Sun的点击式JRE / JDK下载许可证。 (我不知道......)
答案 2 :(得分:2)
作为最佳实践,您不应在源代码管理系统中保留任何二进制文件。对于Java开发人员来说,maven在版本化jar文件方面做得更好。原因是我们希望保持源存储库尽可能小,这样对于那些第一次检查我们的代码的人来说更快。
但是如果你仍然希望在源代码控制中保留二进制文件,最好避免使用CVS,因为CVS在版本化二进制文件方面很糟糕。你可以用谷歌搜索,为什么它是坏的。如果您使用SVN,那么它仍然可以,因为SVN处理二进制文件比CVS好得多。
答案 3 :(得分:0)
我认为将JRE存储在CVS中没有错。
但是,只要您的脚本可以将其作为构建的一部分来提取,那么您是否重要并不重要。例如,如果您想在HTTP服务器上托管可下载的jre.zip,或者在Maven仓库中指向它,那就一样好。
答案 4 :(得分:0)
如果您希望他在运行之前编译代码,那么您的客户端是否准备好了JRE? JDK包含JRE。
答案 5 :(得分:0)
取决于您用来处理依赖项的内容。如果您使用Maven,那么使用您需要的东西创建一个maven包,并将其托管在本地存储库中。
如果您只是拥有CVS(就像我们一样),那么可以创建大型二进制包(因为您需要它们),然后您可以将它们放入CVS中。请注意,它们应该是静态的,以获得最佳的CVS性能。
另请注意,jsmooth软件包可以创建jar的EXE文件,其中嵌入了JRE。这可能会解决您的部署问题。
对于远程编译,Eclipse可以使用普通的JRE。您只需要告诉Eclipse上面已经准备好的JRE位于磁盘上。 Eclipse发行版中还有一个文件夹,启动器会自动查看。
答案 6 :(得分:0)
我想知道客户自己构建应用程序。它需要某种Java编译器,最有可能的是javac是JDK的一部分。因此,您的客户端不仅需要JRE,还需要JDK(除非他们将使用Jikes或其他替代编译器)。
javac能够为以前版本的Java生成字节码,因此使用较新的编译器不会造成任何问题。
就个人而言,我不会将像JRE这样的大型二进制文件包含在我自己的存储库中。可以认为JRE非常稳定,只需列出所需的最低版本即可。安装JRE也与安装单个Java应用程序完全不同。这两项活动不应混为一谈。