Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ApacheAnt如何将.war文件部署到Tomcat_Java_Apache_Tomcat_Deployment_Ant - Fatal编程技术网

Java ApacheAnt如何将.war文件部署到Tomcat

Java ApacheAnt如何将.war文件部署到Tomcat,java,apache,tomcat,deployment,ant,Java,Apache,Tomcat,Deployment,Ant,我使用ApacheAnt1.8将web应用程序部署到本地Tomcat服务器中,当我在命令行上运行“AntDeploy”时,build.xml文件(如下)会产生所需的效果 我的问题是,我注意到.war文件被放置在我期望的位置(deploy.dir在我的主目录的build.properties文件中定义),但它也意外地解压了.war并将上下文本身解压到同一目录中。以下build.xml文件中的哪个位置配置了该文件 <target name='init'> <proper

我使用ApacheAnt1.8将web应用程序部署到本地Tomcat服务器中,当我在命令行上运行“AntDeploy”时,build.xml文件(如下)会产生所需的效果

我的问题是,我注意到.war文件被放置在我期望的位置(deploy.dir在我的主目录的build.properties文件中定义),但它也意外地解压了.war并将上下文本身解压到同一目录中。以下build.xml文件中的哪个位置配置了该文件

  <target name='init'>
    <property file='${user.home}/build.properties'/>
    <property name='app.name' value='${ant.project.name}'/>
    <property name='src.dir' location='src'/>
    <property name='lib.dir' location='lib'/>
    <property name='build.dir' location='build'/>
    <property name='classes.dir' location='${build.dir}/classes'/>
    <property name='dist.dir' location='${build.dir}/dist'/>
  </target>

  <target name='initdirs' depends='init'>
    <mkdir dir='${classes.dir}'/>
    <mkdir dir='${dist.dir}'/>
  </target>

  <target name='compile' depends='initdirs'>
    <javac srcdir='${src.dir}/java' destdir='${classes.dir}'>
      <!--
      <classpath>
        <fileset dir='${lib.dir}/development' includes='javaee.jar'/>
        <fileset dir='${lib.dir}/production' includes='jr.jar'/>
      </classpath>
      -->
    </javac>
  </target>

  <target name='war' depends='compile'>
    <war destFile='${dist.dir}/${app.name}.war' webxml='${src.dir}/web/WEB-INF/web.xml'>
      <classes dir='${classes.dir}'/>
      <!--
      <zipfileset dir='${lib.dir}/production' includes='jr.jar' prefix='WEB-INF/lib' />
      -->
      <fileset dir='${src.dir}/web' excludes='WEB-INF/web.xml' />
    </war>
  </target>

  <target name='build' depends='war' description='compile and create the war' />

  <target name='clean' depends='init' description='Use for a clean build'>
    <delete dir='${build.dir}' />
  </target>

  <target name='ffbuild' depends='clean, build' description='clean and create the war'/>

  <target name='deploy' depends='initdirs' description='copy the war file to the app server'>
    <delete verbose='true' dir='${deploy.dir}/${app.name}'/>
    <fail unless='deploy.dir' message='build.properties must exist in your home directory and define deploy.dir' />
    <copy todir='${deploy.dir}' file='${dist.dir}/${app.name}.war'/>
  </target>



Tomcat有一个自动部署文件夹,您放置的任何war文件都将自动解压缩并部署到该文件夹中。您的ant文件只是通过调用tomcat manager web应用程序(预打包到tomcat中)中的特殊URL将war文件复制到此目录中

从现在起,一切都由tomcat内核自动处理,只要您手动将war文件复制到webapps目录中即可


您可以让ant为tomcat做更多的特定ant任务。尤其是当Tomcat服务器不在本地机器上时

可能,您首先复制
dest dir
中的所有文件,然后制作
war
文件,您应该将文件复制到某个
temp
目录,创建
war
文件,复制到
dest dir
,删除
temp
目录。

我很幸运地完成了Tomcat的Ant部署任务。请查看该文档以获取信息。如果您决定这样做,您应该能够在短时间内让它工作。

您已经在Tomcat安装中启用了autodeploy。提供了autodeploy的详细概述,但简而言之,Tomcat会扫描某些目录以查找更新的web.xml和war文件。如果找到war文件,它会自动部署它

更好的部署方式(特别是如果您需要部署到远程机器上)是使用Tomcat附带的Ant任务。演示如何设置生成文件,以便可以从Ant部署和取消部署。页面很旧,但信息仍然很好。下面是我用来部署到Tomcat的build.xml的一个片段:

<taskdef name="deploy" classname="org.apache.catalina.ant.DeployTask">
  <classpath>
    <path location="${build-jars}/catalina-ant.jar" />
  </classpath>
</taskdef>

<target name="buildAndDeploy" depends="buildWar">
  <deploy url="${tomcat.manager.url}"
          username="${tomcat.manager.username}"
          password="${tomcat.manager.password}"
          path="/${target.name}"
          update="true"
          war="file:${basedir}/deploy/${target.name}.war" />
</target>


您可以在Tomcat的lib目录中找到catalina-ant.jar。

@dvanaria:另外,build.xml文件看起来很像。。。也许你也可以向他们的社区寻求帮助?有一个主要区别,用于部署的API确保拷贝是原子的,使用文件系统会导致Tomcat Autodeploy在完成拷贝之前开始处理WAR文件。