【问题标题】:When using Spring and Maven, what is the best way to deploy the code to the server?使用 Spring 和 Maven 时,将代码部署到服务器的最佳方式是什么?
【发布时间】:2011-05-19 07:07:25
【问题描述】:

我有一个使用 Spring 的项目。每次部署时,我都会运行 maven 目标“包”,它会运行所有测试并创建 war 文件。然后我手动使用ftp程序将war文件复制到服务器。然后我运行一个 bash 脚本来关闭服务器,替换战争并再次启动服务器。

有时当他们对数据库架构进行更改时,我必须手动运行 sql 迁移脚本。

我可以使用更好的工作流程吗?由于项目的战争文件达到 60MB,我必须等待 10-12 分钟才能将其上传到服务器。如果我意识到需要改变一件小事,我必须重新完成整个过程。

这对我来说是双重不利,因为在 DSL 上,上传带宽会杀死下载带宽,因此互联网完全无法使用。即使在项目上工作并运行 maven 目标也很慢,因为它们一直使用 Internet 连接来查找依赖项。

有没有更好的工作方式?谢谢。

【问题讨论】:

    标签: java spring deployment maven


    【解决方案1】:

    首先,您可以通过使用 Maven Deploy 插件来避免手动 ftp 复制。 您可以在以下 URL 找到如何通过 ftp 部署项目:

    http://maven.apache.org/plugins/maven-deploy-plugin/examples/deploy-ftp.html

    第二点是关于您的项目的问题:您的 WAR 大小正常吗?
    我听说过嵌入多余 jar 的配置,以避免在构建最终 jar 时覆盖 META-INF/spring.handlers 的问题。如果您遇到这种情况,您可能也会对此感兴趣:

    http://maven.apache.org/plugins/maven-shade-plugin/examples/resource-transformers.html

    【讨论】:

    • 好吧,我不介意将它上传到服务器。我不认为这个手动步骤真的是问题。如果可以的话,我想要做的是根本不必上传 60 MB,尤其是如果我只进行 2KB 的更改。有什么办法可以同步源和服务器,并通过maven在服务器本身上构建?
    • 好吧,如果您没有 ssh 访问权限,我认为您无法在服务器上进行构建。我根本不了解 Spring,但如果您使用的是 Tomcat (tomcatexpert.com/knowledge-base/deploying-exploded-war-files),似乎可以更新 webapp 部件。如果是这样,您可以使用 maven deploy 部署这些单独的文件。
    猜你喜欢
    • 2022-09-28
    • 1970-01-01
    • 1970-01-01
    • 2010-09-10
    • 2011-03-05
    • 2021-12-16
    • 2013-03-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多