我正在从Ant迁移到Gradle的过程中。我似乎找不到更好的方法来管理Grade中的tomcat部署,因此我试图在Gradle中使用Tomcat Ant任务,但无法正常工作。
这是我在Ant可以正常工作的地方
<taskdef name="deploy" classname="org.apache.catalina.ant.DeployTask"/>
<target name="deploy" description="Install web application"
depends="dist">
<deploy url="${url}" username="${username}" password="${password}"
path="/${contextName}" war="${DIST}/${contextName}.war"/>
</target>
所以在Gradle中,我正在尝试像这样使用Ant任务
ant.taskdef(name:"deploy", classname:"org.apache.catalina.ant.DeployTask",
classpath: "PATH_TO_catalina-ant.jar")
ant.deploy(url="http://localhost:8080/manager/text" username="user" password="pass"
path="/app" war="dist/app.war")
当我使用--debug
标志运行任务时,我可以看到任务正在从JAR中加载属性
Class org.apache.catalina.ant.DeployTask loaded from ant loader (parentFirst)
但是我收到此错误消息
Could not set unknown property 'war' for task ':deploy' of type org.gradle.api.DefaultTask.
WAR绝对是此任务的属性,但是错误消息将其称为DefaultTask
的事实使我认为taskdef
的设置不正确,但我不确定。实际上,什么都没有用,因为如果我删除“ war”,那么它只会抱怨我定义的下一个属性。
我正在使用Gradle 3.5
您需要用逗号分隔任务属性。您是通过taskdef
任务完成此操作的,但在deploy
任务中缺少了它们。
ant.deploy(url="http://localhost:8080/manager/text", username:"user", password:"pass", path:"/app", war:"dist/app.war")