`
Ivan_Pig
  • 浏览: 381979 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

使用Ant部署项目细节问题及解决办法

阅读更多
    说原创也谈不上,是个人在使用Ant的过程中遇到的问题及解决办法,收录一下。
    最近由IDE慢慢的向Ant转移,开始是不习惯。不过用着用着感觉还不错。之前一直用的Intellij Idea,什么都好,就两个不好,内存占用大,部署效率低(不像eclipse那样,ctrl+s,就自动编译,然后tomcat就自动部署了)。这也是我用Ant的理由,算是填补Intellij Idea的不足吧,还有junit的编写,现在又想写junid的冲动(虽然还没写多少  )。之间遇到了一些问题,还是google强大啊,不过还是搜了半天,再加上自己的尝试,终于都解决了。

    其中主要就是部署。
    一开始我的部署方式是。
    1.使用Ant启动tomcat。
    2.编译.
    3.拷贝需要的文件到指定的目录
    4.打包war包
    5.将war包部署到tomcat中
    tomcat不需要重新启动。不过。。。。每次重新部署都需要将近30秒,受不了。
    此处需要一个注意点,就是context的设置,在项目的web根目录下(即和WEB-INF同级的目录)新建一个META-INF目录,接着在此目录下新建一个context.xml文件。其内输入如下内容。
<?xml version="1.0" encoding="UTF-8"?>
<Context reloadable="true" antiResourceLocking="true" antiJARLocking="true"></Context>

    原因是,如果没有这一段内容,tomcat会加载你部署的项目,而不过有些jar被加载了,那么当你undeploy的时候就无法成功了,必须要关闭tomcat,手动删除项目,这显然很郁闷。
加了如上内容,tomcat就会拷贝此项目到临时文件夹内,去加载那个拷贝,那么这样当前的目录就可以自由的重新部署了。
    缺点也说了,效率太低。

    做了如下改进。
    1.为你的项目指定一个虚拟目录,指向上面第三步里面的那个目录
    指定虚拟目录的方法。
    (1)在tomcat/conf/server.xml中,<Host>里面创建一个<Context>。
   
<Context path="/浏览器里面的访问根路径" docBase="项目路径" reloadable="true" ></Context>

     或者在tomcat\conf\Catalina\localhost目录下新建一个 项目名称.xml文件,输入
<Context docBase="项目路径" reloadable="true" ></Context>

    这里就不需要path了,文件名就是访问名称。此方法有个缺点,就是不能删除你的那个项目目录,如果删除了,tomcat会删除这个xml文件的。所以我选择了第一种方法。
    此处的\Catalina\localhost,是在server.xml设定的<Engine>名和<Host>名,可以在server.xml里面找到。
    这里也没有上面的antiResourceLocking="true" antiJARLocking="true"了,我尝试了n遍,如果加上了这两个属性,那么你修改类的时候不会重新加载的。

    这样,当你修改了类或文件后,只需要编译,拷贝,稍等片刻,tomcat就会自动部署了。编译,拷贝时间5秒左右,Ant一执行完,tomcat就基本重部署完了,比上面的30秒快了不少。
1
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics