以前公司做的是台湾的外包,每次发布都要remote到台湾的几台机器,经常有人抢机器用。每次要手动去check out,再执行ant,非常麻烦 。研究了一段时间的ant,有几种远程发布的方法。
一是用FTP,用ant的ftp命令把要发布的文件远程的复制过去,这样要在那边机器上装FTP服务器,还要分配账号,挺讨厌的。
二是用tomcat给的ant任务:deploy,可以把本地WAR文件传送到远程tomcat下,当然,tomcat要运行,也要设置好
tomcat的manager用户。我在本地局域网试一下,成功。
ant脚本简写如下,可能有些property没有复制过来
<property name="project.war.filename" value="${project.name}.war"/>
<property name="project.war.filepath" location="${dist.dir}/${project.war.filename}"/>
<property name="tomcat.server" value="192.168.0.117"/>
<property name="tomcat.username" value="admin"/>
<property name="tomcat.password" value="admin"/>
<property name="tomcat.port" value="8080"/>
<property name="tomcat.project.path" value="${project.name}"/>
<property name="tomcat.server.url" value="http://${tomcat.server}:${tomcat.port}"/>
<property name="tomcat.deploy.url" value="http://${tomcat.server}:${tomcat.port}/manager"/>
<target name="deploy-web" >
<echo message="deploy start" />
<deploy url="${tomcat.deploy.url}"
username="${tomcat.username}"
password="${tomcat.password}"
path="${tomcat.project.path}"
war="file:${project.war.filepath}"
update="true" />
<echo message="deploy end" />
</target>
本地速度很快,但是,传到台湾就比较烦了,WAR档几十MB速度太慢了,看着那边的机器tomcat老是一行行的打印出来正在接受远程发布,极其不爽.
最后研究了一下ant的telnet任务,这个初始的时候我根本就用不起来,可以telnet成功,但提示无法执行命令,google搜的头都大了,有老外说这个命令对windows支持不好,最好用linux,这个又不太现实.我反复尝试,最后发现是可以执行的,脚本如下:
<property name="telnet.server" value="192.168.0.103"/>
<property name="telnet.userid" value="administrator"/>
<property name="telnet.password" value=""/>
<property name="telnet.prompt" value="[done]" />
<property name="telnet.timeout" value="3" />
<property name="telnet.port" value="23"/>
<property name="telnet.cd.directory" value="D:\xxxx\xxxx"/>
<target name="unix-prompts" if="target.isUnix">
<property name="telnet.prompt.command"
value="export PS1=${telnet.prompt}"/>
<property name="telnet.initial.prompt" value="$"/>
</target>
<target name="windows-prompts" unless="target.isUnix">
<property name="telnet.prompt.command"
value="PROMPT ${telnet.prompt}"/>
<property name="telnet.initial.prompt" value=">"/>
</target>
<target name="deploy-remote"
depends="unix-prompts,windows-prompts"
unless="is.localhost">
<telnet server="${telnet.server}" port="${telnet.port}"
userid="${telnet.userid}" password="${telnet.password}"
timeout="${telnet.timeout}" >
<read string="${telnet.initial.prompt}"/>
<write>${telnet.prompt.command}</write>
<read string="${telnet.prompt}"/>
<write>cd ${telnet.cd.directory}</write>
<read string="${telnet.prompt}"/>
<read string="${telnet.prompt}"/>
<write>ant -buildfile=${telnet.cd.directory}\build.xml</write>
<read string="${telnet.prompt}"/>
</telnet>
</target>
公司不用CVS,用的是starteam,于是再用starteam为提供的命令写个自动check out的脚本,如下:
<property name="starteam.servername" value="***.***.tw"/>
<property name="starteam.serverport" value="49222"/>
<property name="starteam.projectname" value="***_PROJECT"/>
<property name="starteam.viewname" value="***_PROJECT"/>
<property name="starteam.rootlocalfolder" value="D:\***_PROJECT"/>
<property name="starteam.rootstarteamfolder" value="***_PROJECT"/>
<property name="starteam.forced" value="false"/>
<property name="starteam.includes" value="*.*"/>
<property name="starteam.deleteuncontrolled" value="false"/>
<property name="starteam.recursive" value="true"/>
<property name="starteam.username" value="someuser"/>
<property name="starteam.password" value="*****"/>
<target name="check-out">
<stcheckout
servername="${starteam.servername}"
serverport="${starteam.serverport}"
username="${starteam.username}"
password="${starteam.password}"
projectname="${starteam.projectname}"
viewname="${starteam.viewname}"
recursive="${starteam.recursive}"
includes="${starteam.includes}"
forced="${starteam.forced}"
deleteuncontrolled="${starteam.deleteuncontrolled}"
rootlocalfolder="${starteam.rootlocalfolder}"
/>
</target>
注意starteam*.jar的版本要与自己机器上的starteam客户端版本一致,不然会出现unknown.
再加上个测试有没有发布成功的脚本
<target name="test-url">
<waitfor maxwait="5" maxwaitunit="second" timeoutproperty="project.missing">
<http url="${project.url}"/>
</waitfor>
<fail if="project.missing">No project found</fail>
</target>
再加上个如果成功发布则为项目成员发mail通知:
<target name="send-mail">
<mail from="***@***.com.cn"
bcclist="${addres.list}"
mailhost="192.168.0.9"
subject="deploy success"
message="${success.message}"
>
</mail>
</target>
判断tomcat是否在运行,如果没有则启动之,如下:
<target name="wait-for-server">
<waitfor maxwait="5" maxwaitunit="second" timeoutproperty="server.missing">
<http url="${tomcat.server.url}"/>
</waitfor>
</target>
<target name="start-tomcat" depends="wait-for-server" if="server.missing">
<exec dir="${tomcat.home}/bin" executable="${tomcat.home}/bin/startup.bat" />
</target>
再设置好依赖关系与选择性执行任务,局域网内测试通过.
到时我们只要在本机执行deploy-remote,就可以让台湾那边机器自己去check out编译打包启动tomcat发布测试发布联接是否有效有效则发mail通知开发人员发布成功,再也不用remote到台湾机器上远程操作,打开starteam手工check out再打开控制台执行ant了,生活是多么美好啊!!
OK,万事具备,MSN上找到台湾人:可不可以在测试服务器上开通telnet?
回答的很干脆:不可以!
靠!!
分享到:
相关推荐
### 使用ANT远程发布Web项目 #### 一、概述 在软件开发过程中,自动化构建与部署是提高开发效率、减少人为错误的重要手段之一。Apache Ant 是一个用于自动化软件编译、测试、部署等过程的Java库及命令行工具,它...
在本场景中,我们将探讨如何使用Ant来发布一个Web项目到Apache Tomcat服务器。 首先,理解Ant的基本结构是至关重要的。一个Ant项目通常包含一个build.xml文件,这是Ant执行的所有指令的中心。在这个文件中,我们...
标题"9_ant_通过ftp发布文件"和描述暗示了我们将探讨如何使用Ant来通过FTP(File Transfer Protocol)协议上传文件。 FTP是一种用于在互联网上传输文件的标准协议。在Ant中,我们可以使用`ftp`任务来实现这一功能。...
Ant支持自动部署应用程序到远程服务器,如`ftp`、`scp`任务可以用于文件传输,`deploy`任务可用于发布Web应用。 十二、测试集成 Ant与JUnit和其他测试框架良好集成,可以方便地执行单元测试,并生成测试报告。 ...
9. **发布与部署**:Ant可以用于应用的打包、发布和部署,包括生成JAR、WAR或EAR文件,以及将这些文件部署到远程服务器上。 10. **依赖分析**:在Ant 1.8.0中,依赖分析能力得到提升,有助于优化构建顺序,减少不必...
最后,关于**发布到LINUX**,在Linux环境中,我们需要确保Java环境已安装,并且正确配置了环境变量。部署步骤通常包括: 1. 使用SCP或SFTP将ANT打包生成的文件传输到Linux服务器的指定目录。 2. 使用SSH登录服务器...
5. 部署:Ant可以将构建结果发布到远程服务器,实现自动化部署。 三、Ant的优点 1. 平台无关性:基于Java的Ant可以在任何安装了Java的平台上运行。 2. 可扩展性:Ant提供了丰富的内置任务,同时允许用户自定义...
10. **部署与发布**:Ant可用于部署应用程序到远程服务器,包括上传文件、启动服务等操作。 在使用Apache Ant 1.6.2时,开发者需要注意的是,这个版本相比最新版本可能缺少一些特性,比如对新版本JDK的支持、新的...
例如,你可以使用`<javac>`任务来编译Java源代码,使用`<jar>`任务来打包结果,甚至使用`<ftp>`或`<sshexec>`任务来进行远程部署。 Ant 1.9.13 版本可能引入了一些新特性、修复了已知问题,增强了性能,以提供更好...
- **编写目的**:本文档旨在指导软件发布人员如何正确安装与配置Apache Ant,解决在安装与使用过程中可能遇到的问题,确保能够顺利地使用Ant对Flex/Java工程项目进行自动化编译与打包。 #### 二、环境说明 - **Ant...
10. **部署与发布**:Ant可以用于部署应用到服务器,包括WAR和EAR文件的创建与发布,以及远程系统的文件传输。 通过“Ant使用指南”,你可以逐步学习如何设置和运行Ant项目,掌握如何编写和维护构建文件,以及如何...
5. **部署**:Ant可以通过`copy`或`ftp`任务将应用部署到远程服务器,简化了发布流程。 6. **依赖管理**:虽然Ant自身不提供复杂的依赖管理功能,但可以通过与 Ivy 或 Maven 结合,解决项目依赖库的下载和管理问题...
- **部署**:支持发布应用程序到远程服务器,简化部署流程。 - **版本控制集成**:可以与SVN、Git等版本控制系统配合,管理源代码。 总之,Apache Ant 1.6.2提供了一种简洁、灵活的方式来管理和构建Java项目。...
- **部署**:发布应用程序到远程服务器或应用服务器。 - **清理**:清除构建过程中产生的临时文件和目录。 - **文件操作**:包括复制、移动、删除和重命名文件或目录。 3. **Ant的配置** - **环境设置**:确保...
- **构建部署**:使用`ftp`或`sftp`任务将构建结果发布到远程服务器。 在实际应用中,Spring项目可能会结合Ant与Ivy或Gradle等依赖管理工具,以更方便地管理和下载所需的库。 总的来说,虽然现代项目倾向于使用更...
Ant 1.8.2 是该工具的一个版本,发布于2010年,旨在提供更稳定、高效的项目构建功能。 在Ant 1.8.2中,你可以找到两个主要的压缩文件: 1. **apache-ant-1.8.2-src.zip**:这个文件包含了Ant 1.8.2的源代码,如果...
10. **部署与发布**:Ant可以用于部署应用到远程服务器,包括WAR和EAR文件的上传,以及数据库脚本的执行。 11. **版本控制集成**:尽管Ant 1.7年代较为久远,但依然可以集成CVS等早期的版本控制系统,进行版本控制...
ant脚本构建工具,有详细的注释、用于构建程序war包,执行编译、修改、拷贝、远程上传程序war包、远程发布程序、远程重启服务器(tomcat)
`apache-ant-1.7.1` 版本是Apache Ant的一个特定发行版,发布于2008年,为当时的开发者提供了稳定的构建环境。 在提供的文件列表中,我们可以看到以下关键文件: 1. **INSTALL**: 这通常是一个指南,包含了安装...