TeamCity部署到Tomcat,Ant失败

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TeamCity部署到Tomcat,Ant失败相关的知识,希望对你有一定的参考价值。

我在Ubuntu 12上运行TeamCity 7,我正在尝试使用Ant将war文件部署到使用IP x的机器上的tomcat服务器上。问题是 - 这在TeamCity 7的另一台机器上运行,我唯一改变的是机器(移动到在KVM上运行的Ubuntu)和TC版本(升级)。

  1. 我已将ANT_HOME设置到正确的位置,我看到TC在构建日志中使用它:... -Dant.home = / usr / share / ant ...
  2. 我已经将以下罐子添加到我的ANT_HOME / lib:catalina-ant,tomcat-coyote,tomcat-juli,tomcat-util
  3. 构建正在具有默认Ant设置的代理上运行
  4. 我的ant文件看起来像这样:
<target name="deploy.to.server">
    <property name="port" value="${tomcat.port}"/>
    <property name="tomcat.manager" value="manager/text"/>
    <property name="url" value="http://${tomcat.server}:${port}/${tomcat.manager}"/>
    <property name="path" value="/${server.name}"/>

    <echo message="Deploying application to ${url}"/>

    <antcall target="undeploy.from.tomcat"/>
    <sleep seconds="3"/>
    <antcall target="deploy.to.tomcat"/>
</target>

<taskdef name="deploy"    classname="org.apache.catalina.ant.DeployTask"/>
<taskdef name="undeploy"  classname="org.apache.catalina.ant.UndeployTask"/>

<target name="deploy.to.tomcat" description="Install web application">
    <deploy url="${url}" username="${username}" password="${password}"
            path="${path}" war="${work.dir}/${path}.war"/>
</target>

<target name="undeploy.from.tomcat" description="Remove web application">
    <undeploy url="${url}" username="${username}" password="${password}"
            path="${path}"/>
</target>

我在TC日志中有这个:

[Step 1/2] Starting: /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java -Dagent.home.dir=/home/system/dev/TeamCity/buildDeployAgent -Dagent.name=Deploy Agent -Dagent.ownPort=9091 -Dagent.work.dir=/home/system/dev/TeamCity/buildDeployAgent/work -Dant.home=/usr/share/ant -Dbuild.number=131 -Dbuild.vcs.number.Nutrino_Monitor_sources=588 -Dbuild.vcs.number.Nutrino_build_scripts=590 -Dfile.encoding=ANSI_X3.4-1968 -Dfile.separator=/ -Djava.io.tmpdir=/home/system/dev/TeamCity/buildDeployAgent/temp/buildTmp -Dos.arch=amd64 -Dos.name=Linux -Dos.version=3.5.0-19-generic -Dpath.separator=: -Dteamcity.agent.cpuBenchmark=684 -Dteamcity.agent.dotnet.agent_url=http://localhost:9091/RPC2 -Dteamcity.agent.dotnet.build_id=45574 -Dteamcity.auth.password=mlTjdmhOxwfxuM6vGfcQPsKg81q29rFU -Dteamcity.auth.userId=TeamCityBuildId=45574 -Dteamcity.build.changedFiles.file=/home/system/dev/TeamCity/buildDeployAgent/temp/buildTmp/changedFiles7524737972530602224.txt -Dteamcity.build.checkoutDir=/home/system/dev/TeamCity/Builds/DeployNutritionServer -Dteamcity.build.id=45574 -Dteamcity.build.properties.file=/home/system/dev/TeamCity/buildDeployAgent/temp/buildTmp/teamcity.build3049879068391711216.properties -Dteamcity.build.tempDir=/home/system/dev/TeamCity/buildDeployAgent/temp/buildTmp -Dteamcity.build.workingDir=/home/system/dev/TeamCity/Builds/DeployNutritionServer -Dteamcity.buildConfName=Deploy to Integration -Dteamcity.buildType.id=bt38 -Dteamcity.configuration.properties.file=/home/system/dev/TeamCity/buildDeployAgent/temp/buildTmp/teamcity.config301718488736388101.properties -Dteamcity.projectName=Nutrition Builds -Dteamcity.runner.properties.file=/home/system/dev/TeamCity/buildDeployAgent/temp/buildTmp/teamcity.runner1078243400245029410.properties -Dteamcity.runtime.props.file=/home/system/dev/TeamCity/buildDeployAgent/temp/agentTmp/ant7992360137092769527runtime -Dteamcity.tests.recentlyFailedTests.file=/home/system/dev/TeamCity/buildDeployAgent/temp/buildTmp/testsToRunFirst5600043147441131768.txt -Dteamcity.version=7.1.2 (build 24170) -Dtomcat.server=integration -Duser.country=US -Duser.home=/home/system -Duser.language=en -Duser.name=system -Duser.timezone=Asia/Jerusalem -Dwork.dir=/home/system/dev/TeamCity/Builds/DeployNutritionServer -classpath /usr/share/java/ant-launcher-1.8.2.jar org.apache.tools.ant.launch.Launcher -lib /home/system/dev/TeamCity/buildDeployAgent/plugins/antPlugin/ant-runtime.jar:/home/system/dev/TeamCity/buildDeployAgent/lib/runtime-util.jar -listener jetbrains.buildServer.agent.ant.AgentBuildListener -buildfile /home/system/dev/TeamCity/Builds/DeployNutritionServer/build/deploy.xml deploy.nutrino.server
[15:06:21][Step 1/2] in directory: /home/system/dev/TeamCity/Builds/DeployNutritionServer
[15:06:21][Step 1/2] taskdef
[15:06:21]
[taskdef] taskdef class org.apache.catalina.ant.DeployTask cannot be found
 using the classloader AntClassLoader[]
[15:06:21]
[Step 1/2] The following error occurred while executing this line:
/home/system/dev/TeamCity/Builds/DeployNutritionServer/build/tomcat.tasks.xml:9: taskdef class org.apache.catalina.ant.DeployTask cannot be found
 using the classloader AntClassLoader[]
[15:06:21][Step 1/2] Process exited with code 1
[15:06:21][Step 1/2] Ant output
[15:06:21][Ant output] Buildfile: /home/system/dev/TeamCity/Builds/DeployNutritionServer/build/deploy.xml
[15:06:21][Ant output] 
[15:06:21][Ant output] BUILD FAILED
[15:06:21][Ant output] /home/system/dev/TeamCity/Builds/DeployNutritionServer/build/deploy.xml:8: The following error occurred while executing this line:
[15:06:21][Ant output] /home/system/dev/TeamCity/Builds/DeployNutritionServer/build/tomcat.tasks.xml:9: taskdef class org.apache.catalina.ant.DeployTask cannot be found
[15:06:21][Ant output]  using the classloader AntClassLoader[]
[15:06:21][Ant output] 
[15:06:21][Ant output] Total time: 0 seconds
[15:06:22][Step 1/2] Step Deploy (Ant) failed

现在,这非常奇怪,因为当我从命令行运行它时它运行得很好:ant -buildfile deploy.xml -Dtomcat.server = ...

两者之间没有明显的区别 - 从CL运行它和TC代理都应该从ANT_HOME(usr / share / ant)运行Ant,并在$ ANT_HOME / lib中加载库。

任何帮助,将不胜感激。 :)

谢谢!

答案

刚回答这个问题,

感谢@timomeinen - 将catalina-ant.jar添加到$ ANT_HOME / lib完成了这项工作。

另一答案

这意味着它没有看到lib catalina-ant.jar

你可以加:

类名= “org.apache.catalina.ant.DeployTask” 类路径= “C:编程 Tomcat的实例 8080 lib中卡塔利娜-的ant.jar”

它将解决这个参考问题,但我猜你将来会遇到与其他库类似的问题,所以从长远来看你仍然需要解决参考问题。

以上是关于TeamCity部署到Tomcat,Ant失败的主要内容,如果未能解决你的问题,请参考以下文章

windows上teamcity+SVN+apache-ANT的安装与配置

jenkins+tomcat+ant+java+linux 自动部署项目

Apache Ant + Ivy 构建了一个部署到本地 Tomcat 的 Web 应用程序

windows+ant+git+tomcat中ant直接获取git项目部署注意点

Teamcity 构建链问题

用Ant来做一键部署