我有一个运行在Windows机器上的Tomcat 7服务器上的应用程序。在目前阶段,我必须经常更新和修复它。每当我需要更新应用程序时,我都会这样做:
我相信有一种方法可以自动完成这一切。那是什么?
发布于 2012-03-18 20:35:08
使用kwatee敏捷部署 (我是开发人员),您可以在一分钟内将jew应用程序的自动部署配置为tomcat (参见教程)。然后,您可以通过简单的web界面按需触发部署,或者自动使用kwatee ant任务或kwatee maven插件。哦,它也是免费的。
发布于 2012-03-18 17:54:18
摘要:我会花一些时间来建立一个构建和部署方案。这是一些前期的工作,但一个通用的解决方案,可以根据需要后,它的设置。
您可以使用Ant脚本完成步骤1。首先要安装Ant,然后编写一个简短的build.xml来包含类似于这个例子的内容。正确安装Ant后,您只需切换到build.xml所在的目录并运行'ant‘。
对于步骤2到6,由于您需要清理目标、管理服务等,所以我将考虑生成MSI安装程序或可执行文件。我对MSI工具的第一选择是高级安装程序。您将在特征列表下看到,免费软件版本允许您在安装和卸载时控制(启动、停止、安装、卸载) Windows服务。
(附带说明:我们使用高级安装程序Enterprise已经四年了。它不断改进,是一个非常高质量的产品。你不会失望的。)
您也可以通过Ant控制MSI的创建。下面是我的build.xml中的一个片段,它调用几个宏来编译和部署我维护的其中一个产品:
<target name="myproduct-installer" depends="unzip-myproductdocs">
<build-ai-installer product.name="MyProduct" installer.path="setup/installs/MyProduct" project.file="MyProduct.aip" />
</target>
<target name="release-myproduct-installer">
<release-AI-installer product.name="MyProduct" installer.path="setup/installs/MyProduct" product.path="${some-predefined-target}" />
</target>下面是上面使用的宏:
<macrodef name="build-ai-installer">
<attribute name="product.name" />
<attribute name="installer.path" />
<attribute name="project.file" />
<sequential>
<echo message="Making installer at @{installer.path}" />
<mkdir dir="@{installer.path}/newInstall" />
<exec dir="@{installer.path}" executable="${env.ADVANCEDINSTALLER}" failonerror="true">
<arg line="/edit @{project.file} /SetVersion ${product.version}" />
</exec>
<exec dir="@{installer.path}" executable="${env.ADVANCEDINSTALLER}" failonerror="true">
<arg line="/build @{project.file}" />
</exec>
</sequential>
</macrodef>
<macrodef name="release-AI-installer">
<attribute name="product.name" />
<attribute name="installer.path" />
<attribute name="product.path" />
<sequential>
<copy todir="@{product.path}">
<fileset dir="@{installer.path}/newInstall" />
</copy>
</sequential>
</macrodef>这些宏使用名为env.ADVANCEDINSTALLER的Windows环境变量。更简单的构建设置只会设置Ant属性并删除“and”。前缀:
<property name="ADVANCEDINSTALLER" value="path-to-AdvancedInstaller.com" />这种自动化水平一旦启动和运行,就会产生效益。但是,如果它超出了您的需要(我不会感到惊讶),这个答案可能会有所帮助。
发布于 2012-03-19 07:47:49
有办法可以做到。
一种方法是使用连续集成系统,例如詹金斯。它允许您定期或在每次提交到源存储库之后构建war。
然后是Jenkins 部署插件,它可以用于在构建后将war部署到正在运行的Tomcat实例。它使用Tomcat的标准管理器webapp,因此必须安装在Tomcat中,并设置用户和密码。
请注意,频繁地重新部署到正在运行的Tomcat很不幸是一种简单的方法来发现您的way应用程序在卸载时会泄漏内存。关于Tomcat的OutOfMemory和MemoryLeakProtection文章是有用的读物。自动Tomcat重新启动可能是一个有用的权宜之计。
https://stackoverflow.com/questions/9759559
复制相似问题