Java ant中的mkdir失败。我如何处理这个错误
我拥有的ANT构建脚本执行以下操作:Java ant中的mkdir失败。我如何处理这个错误,java,ant,mkdirs,Java,Ant,Mkdirs,我拥有的ANT构建脚本执行以下操作: 在Windows server上执行构建并压缩二进制文件 使用net use 我正在使用在安装的驱动器上创建一个目录(P:) 将二进制文件复制到该驱动器 下面是我的mkdir <echo>Creating ${buildRequesterUserId} folder at mirroring site starts</echo> <mkdir dir="P:\build_output\${buildRequesterUserId
net use
在安装的驱动器上创建一个目录(P:)mkdir
<echo>Creating ${buildRequesterUserId} folder at mirroring site starts</echo>
<mkdir dir="P:\build_output\${buildRequesterUserId}"/>
<echo>Creating ${buildRequesterUserId} folder at mirroring site ends</echo>
开始在镜像站点创建${buildRequesterUserId}文件夹
在镜像站点端创建${buildRequesterUserId}文件夹
有时文件夹的创建工作正常,有时失败,出现以下错误
由于未知原因,创建未成功
,并导致生成失败
这个错误是随机发生的。Mkdir有时会工作。我不确定它为什么会失败,也不确定它是否是因为网络延迟
另外,我试图创建的目录可能已经存在,也可能不存在。我读到,如果目录已经存在,mkdir不会做任何事情
我检查过了,mkdir没有failonerror
。我不希望构建因此而失败
我已经处理了copy
部分中的错误,但不确定如何处理此mkdir
<echo>Creating ${buildRequesterUserId} folder at mirroring site starts</echo>
<mkdir dir="P:\build_output\${buildRequesterUserId}"/>
<echo>Creating ${buildRequesterUserId} folder at mirroring site ends</echo>
我怎样才能做到这一点?任何帮助都将不胜感激
问候
KarthikApacheAnt
Mkdir
任务正在调用File.mkdirs()
方法,该方法是
File.mkdirs()
在远程文件系统的情况下,您的主机很有可能在“代码>文件.MKDRISS())/代码>操作的中间意识到文件系统的更改,但失败了。
Ant似乎试图将其修复为
Mkdir
中的代码从此处更改
在这方面
那么升级到最新的Ant可能会有所帮助
如果没有-可以使用您自己的execute()
方法实现创建一些蛮力Mkdir
任务扩展
如果没有-来自Ant Contrib将起作用。以下是我解决问题的方法:
打开build.properties文件(实际打开所有属性文件)
引用自build.xml)
检查文件任何一行的尾随空格和制表符李>
在文件末尾添加一个额外的空行
您可以使用复制任务来创建目录(包括子目录)。对于我来说,1.9版的ant也有类似的问题
我正在删除一个目录并立即重新创建它:
<delete dir="${jar.dir}"/>
<mkdir dir="${jar.dir}"/>
即使目录是本地的(不是网络驱动器),在两次操作之间添加1秒的睡眠也解决了我的问题:
<delete dir="${jar.dir}"/>
<sleep seconds="2"/>
<mkdir dir="${jar.dir}"/>
对于我来说,在linux中解决这个问题就像运行sudo用户一样简单
“sudo ant”如果您不介意,请您对我的答案发表评论,并描述它的哪一部分为您解决了问题(如果它真的解决了问题:)您有写权限吗?升级ant。我测试了1.7倍,但仍然失败。我没有尝试过TryCatch,因为我没有AntContrib。但我认为这也将有助于我捕获错误他说更改是在1.8.0和1.8.2之间,因此升级到1.7.x不会有帮助…我可以知道这背后的原因吗?
<delete dir="${jar.dir}"/>
<sleep seconds="2"/>
<mkdir dir="${jar.dir}"/>