将java代码部署到生产环境中的最佳方法是什么?

将java代码部署到生产环境中的最佳方法是什么?,java,maven-2,Java,Maven 2,目前,我们有一个JavaRESTlet API,其依赖项通过Maven控制。当我们更新API时,我们运行maven assembly:assembly,它进行单元测试等,并生成一个jar文件。然后我们将其上传到生产服务器,并使用nohup运行它 有没有更好或更自动化的方法来实现这一点?这就是哈德逊这样的人进来的地方吗 谢谢有几个Maven插件可以帮助部署。最普遍的是,但也有一些具体服务器的特定于应用服务器的插件,如。我工作过的大多数公司(实际上,所有公司)都有某种定制的内部构建部署系统;即使构建

目前,我们有一个JavaRESTlet API,其依赖项通过Maven控制。当我们更新API时,我们运行maven assembly:assembly,它进行单元测试等,并生成一个jar文件。然后我们将其上传到生产服务器,并使用nohup运行它

有没有更好或更自动化的方法来实现这一点?这就是哈德逊这样的人进来的地方吗


谢谢

有几个Maven插件可以帮助部署。最普遍的是,但也有一些具体服务器的特定于应用服务器的插件,如。

我工作过的大多数公司(实际上,所有公司)都有某种定制的内部构建部署系统;即使构建是使用标准框架完成的(比如我现在公司使用的Maven)。
这部分是因为有许多方面与公司特定的基础设施、容量管理和监控系统密切相关;因此,即使有开源系统,通常也有需要调整的地方。

听起来你是在独立运行你的应用程序——它不是任何应用程序服务器的一部分。如果您不使用应用程序服务器,可能有一些方法可以让cargo和maven为您部署它,但是您最好只使用一些shell脚本来部署和运行应用程序

但是,随着应用程序的增长,您可能会发现需要Jetty、JBoss、Glassfish、Tomcat等应用程序服务器。当出现这种情况时,请查看Maven的cargo插件,因为它允许您执行以下操作:

mvn cargo:redeploy
这将打包您的应用程序,将其发送到服务器并重新启动应用程序。如果您希望Hudson自动为您执行此操作,您可以将其添加为要构建的目标


Cargo可以在您必须频繁更新应用程序服务器时为您节省大量时间。

我的经验与webapp部署有关。但在这里也应该如此。使用,(或),可能与产品发布结合使用

自动发布过程更可靠,因为没有可能忘记某个步骤的人为因素

我们还使用Liquibase进行数据库版本控制。并且,如果您在应用程序部署中处理数据库更改。您将认识到,在运行alter脚本时,Liquibase可以极大地增强信心

我建议浏览以下资源

  • 如果可以,请按照这个模式进行操作
  • 这本书真的帮了我们很大的忙