java - 基于Java的简单部署工具

标签 java linux grails maven

我正在寻找一个非常简单的 JVM 项目(Java、Spring、Grails 等)部署工具,具有以下功能:

  • 不需要专用服务器/代理/等,我想从一台开发人员机器(或 CI 服务器)作为简单的控制台命令运行部署
  • 不需要任何特殊的服务器配置,也不应该为您进行服务器配置
  • 只需使用 SCP 上传 WAR,或者最好使用 rsync(仅更新更改的文件)
  • (理想情况下)静态文件上传到 s3/cloudfront
  • 可以在远程服务器上运行命令(重新启动tomcat服务)
  • 在服务器上存储几个最新版本,并能够回滚到其中任何一个(基本上应该是符号链接(symbolic link)的更新)
  • 可以配置为使用不同的服务器(测试、登台和生产)
  • (理想情况下)有 Maven 插件或 Grails 插件
  • 支持并行上传到少量服务器

应该是这样的:

$ deploytool staging deploy 
$ deploytool staging rollback

$ mvn deploytool:deploy -P staging
$ mvn deploytool:rollback -P staging

基本上它只是一个:

  1. 编译+测试+构建存档
  2. 在服务器上创建“日期”目录 (/.../application/version-%date%/)
  3. 从本地机器上传 WAR 内容到此目录
  4. 更新之前的符号链接(symbolic link) (/.../application/current/ -> /.../application/version-%date%/
  5. 重新启动tomcat(sudo service tomcat7 restart)
  6. 删除最旧版本的目录(仅保留最近 5 个版本,或最近 45 天的版本)
  7. 如果出现问题 - 将符号链接(symbolic link)更新到以前的版本(并重新启动 tomcat)

我看过 Puppet 和 JClouds,但似乎是不同的东西,更多的是关于集群配置,而不是部署。目前,我在一个项目中使用 Ruby Capistrano,在另一个项目中使用 bash 脚本。 Capistrano 不错,但需要安装 rvm、ruby、gems 等,对于非 ruby​​ 团队来说效果不佳,并且需要对 java 项目进行大量定制。

所以,我想知道,是否有适用于 Java/JVM 项目的类似 Capistrano 的工具?

最佳答案

  1. 使用 maven-compiler-pluginmaven-surefire-pluginmaven-war-plugin 进行构建
  2. 使用 buildnumber-maven-plugin 创建具有当前时间戳值的属性
  3. 使用 wagon-maven-plugin 和生成的时间戳值将 war 上传到登台服务器
  4. 使用sshexec-maven-plugin启动shell脚本,该脚本将使用所选版本的应用程序重新启动tomcat

关于java - 基于Java的简单部署工具,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11616765/

相关文章:

grails - 表的一部分的Lucene Grails可搜索插件构建索引

java - 使用 Google API 的 CLI 应用程序

grails - Grails中具有关联的多个数据源

java - 如何用 spring 捕获 hibernate 错误

C++ 使用 *i 指针打开文件,在 Linux 中覆盖但在 Windows 中不覆盖

linux - 如何在 Ubuntu 中设置绿屏?

linux - 内核空间中的优先级

grails - 获取 paypal rest api grails 的访问 token

java - 如何将 PreferenceFragment 与 ViewPager 一起使用?

java - 服务小程序异常 : No servlet class has been specified