Ant 删除文件夹的问题,谢谢了~~

zhl1015 2009-09-11 08:49:45
先帖代码,就是一个建立、拷贝、编译、删除的过程,但删除报错:

<project name="project" default="init" basedir=".">
 <property name="disk" value="d:" />
 <property name="project.name" value="hysis" />

 <target name="compile-jsp" description="预编译jsp文件">
  <mkdir dir="${disk}/${project.name}" />

  <copy todir="${disk}/${project.name}">
   <fileset dir="${basedir}">
    <exclude name="**/CVS" />
    <exclude name="build.xml" />
    <exclude name="WEB-INF/classes/" />
   </fileset>
  </copy>

  <jasper package="org.apache.jsp"
      uriroot="${disk}/${project.name}"
      outputDir="${disk}/tempJspSrc"
      addwebxmlmappings="true"
      webXmlFragment="${disk}/${project.name}/WEB-INF/generated_web.xml"
      validateXml="false"
      javaEncoding="GBK" />

  <delete dir="${disk}/${project.name}" />
 </target>

</project>


我是把web文件夹下的东西全都拷贝到D盘,当然这里面有JSP文件,我就把d:\hysis\下的.jsp全部编译一下,但编译后却不能删除目录,报错如下:
Unable to delete file D:\hysis\WEB-INF\lib\xxxxxxx.jar

但我试了很久,如果把<jasper>的 uriroot="${basedir}"(build.xml是和WEB-INF同级目录的,就是网站的跟目录),就可以删除这个文件夹了。

但我不能用下面的这种方式,因为addwebxmlmappings="true",这样的话会把项目里的web.xml添加许多servlet配置,所以一定要用上面的做法,但目录就是删不掉,很郁闷~~希望大家能帮帮我,谢谢了~~

(另外能否有人告诉我webXmlFragment属性是做什么用的?)
...全文
1136 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
ligangchina 2010-03-20
  • 打赏
  • 举报
回复
学习~~~~~~~~
阿士匹灵 2009-09-13
  • 打赏
  • 举报
回复
学习
config_man 2009-09-13
  • 打赏
  • 举报
回复
我不是来学习的,我是要分的
youjianbo_han_87 2009-09-12
  • 打赏
  • 举报
回复
把IDE关了,在cmd窗口运行ant删除
jinxfei 2009-09-12
  • 打赏
  • 举报
回复
这个独立目录可删,可不删,取决于你每次想做增量发布还是全量发布。

由于这个目录是独立的,所以不可能和eclipse或者tomcat有关系,也不可能删不掉。
如果被人占用,那么这个目录就不是独立的。

就这么简单,所以,你还是应该检查你的环境。
zhl1015 2009-09-12
  • 打赏
  • 举报
回复
回jinxfei,我也是先拷贝到一个独立的目录,然后打WAR包,但打完包后你不将这个独立的目录删掉吗?
放TOMCAT里解包是后话,还没到那步呢,呵呵
zhl1015 2009-09-12
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 youjianbo_han_87 的回复:]
把IDE关了,在cmd窗口运行ant删除
[/Quote]
我的确是在ECLIPSE里运行的,但我没有下ANT的JAR包,所以在CMD里运行不了吧
zhl1015 2009-09-12
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 jinxfei 的回复:]
这个独立目录可删,可不删,取决于你每次想做增量发布还是全量发布。

由于这个目录是独立的,所以不可能和eclipse或者tomcat有关系,也不可能删不掉。
如果被人占用,那么这个目录就不是独立的。

就这么简单,所以,你还是应该检查你的环境。
[/Quote]
我试过,原因是ANT占用了这个目录下WEB-INF/lib/下的JAR包,但只有用<jasper>标签时才占用,占用可以理解,但要在ANT执行完毕后才能释放,可删除是在执行过程中的,所以很郁闷。
这个目录不删也可以,但我留着没什么用,我每次只需要一个WAR包,是投产用的,我这简单,不存在增量和全量。
如果可以的话能否做一个build.xml实验一下,就是<jasper>的问题,估计修改这个能达到效果,但我初学,很多东西都不会用,谢谢了
Gqinqin 2009-09-11
  • 打赏
  • 举报
回复
学习!
musecangying007 2009-09-11
  • 打赏
  • 举报
回复
学习
Betterjava 2009-09-11
  • 打赏
  • 举报
回复
学习
jinxfei 2009-09-11
  • 打赏
  • 举报
回复
我不太清楚你的环境,一般如果你要删除的目录是Eclipse工程,会被Eclipse占用,如果要删的是Tomcat下的应用,会被Tomcat占用。

我的建议是修改你的ant构建方案,
我是这样的,将ant的发布目标指向一个独立的路径,将所有的文件发不到那里,然后做成war包,拷贝到tomcat下,让tomcat自己解包。
zhl1015 2009-09-11
  • 打赏
  • 举报
回复
是这个原因,我也在跑build.xml时手工去删过,提示正在被使用,但不知道为什么会用那些JAR包,而且用完了为什么不放开,我想得到解决的方法,谢谢了~~
jinxfei 2009-09-11
  • 打赏
  • 举报
回复
通常删除不了,在windows上是有人在用,比如Eclipse或者tomcat。

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧