在生产中更新Jar

时间:2013-08-14 17:19:31

标签: java eclipse jar production-environment

我有一个用于客户端的Swing / Java应用程序,并且每周都有更新。 问题是设置只是布置类及其各自的目录,在更新时我只是更新类。

我想做一个包含所有类的jar,但我不确定如何才能更新它...

另外一些客户需要在本周内进行一些更新,只更新一两个课程。

这样做的正确方法是什么?

我正在使用Eclipse。 编辑:我知道如何创建jar,我只是不知道如何动态更新它。

2 个答案:

答案 0 :(得分:3)

我建议您研究一下Java WebStart,它可以满足您的需求。

您需要首先创建完成的部署,然后您可以考虑为部署创建JNLP文件,以及将所有文件放到Web服务器以供用户访问的方法。现在只需让用户每次更新时都下载整个内容。当您获得更多经验时,您可以了解如何进行增量更新。

我强烈建议在部署路径中包含内部版本号或时间戳,这样就不会在客户端错误地缓存jar文件。

答案 1 :(得分:2)

执行此操作的一般方法,即使只进行了少量更改,也就是在每次更新后重新打包JAR并将该JAR提供给用户。用户将替换现有的JAR。 如何生成您的JAR取决于您。许多IDE支持它,你可以编写一个shell脚本,使用现有的构建系统,如ant或maven,甚至make,等等。 (见下面的编辑)

如果您的JAR非常庞大且部署繁琐,您可以将项目拆分为较小的子组件,每个子组件都有自己的JAR,并且只重新分配包含更改的子组件。这对您来说可能是也可能不是重大的重构,甚至可能都不合适。对于大多数小型或平均规模的项目,这通常是不必要的。

至于部署,还有很多方法可以让用户更轻松。你可以给他们一个JAR文件。你可以用例如install4j。您可以使用Java Web Start(尽管它很笨重)。还有其他人。

install4j和JWS都支持自动检查更新。如果您选择支持该功能,那么您需要做的就是更新您的分发站点,用户将自动接收更新。这也取决于你。

但是对你的问题的一个简短回答是:如果你把所有的类打包在一个JAR中,无论有多少类改变,你都希望将整个更新的JAR提供给用户。抵消这种成本的好处是,JAR是一个很好的,压缩的,自包含的应用程序/库源代码集合,这使得管理和部署非常方便。

编辑:响应您指定使用Eclipse的编辑,Josh M在您对答案的评论中给出了说明。要添加他的评论,要导出Runnable Jar,你必须设置一个Run Configuration,如果你已经在Eclipse中运行你的应用程序,你可能已经拥有了。如果没有,您可以在“运行”菜单中创建一个。

编辑2:请参阅Thorbjørn Ravn Andersen's answer以获取一些不错的JWS提示。