mkdir dans ant échoue. Comment puis-je gérer cette erreur
Le script ANT, j'ai effectue les opérations suivantes:
- Effectuer les versions sur Windows server & Zip les fichiers binaires
- Mapper un lecteur réseau avec les informations d'identification différentes sur un lecteur local (ex P:) à l'aide de
net use
- Je suis en utilisant
<mkdir>
pour créer un répertoire sur le lecteur monté (P:) - Copier les fichiers binaires afin que le lecteur
Ci-dessous mon code pour 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>
Quelques temps la création d'un dossier de travaux et de quelques temps, il échoue avec l'erreur ci-dessous
creation was not successful for an unknown reason
et rend le build échoue
Cette erreur se produit au hasard. La Mkdir fonctionne un certain temps. Je ne suis pas sûr pourquoi elle échoue et que vous ne savez pas si sa à cause de la latence réseau
également le répertoire que je suis en train de créer peut ou peut ne pas exister déjà. J'ai lu que la mkdir ne fait rien, si le répertoire existe déjà
J'ai vérifié et il n'y a pas de failonerror
pour mkdir. Je ne veux pas le construire à l'échec à cause de cela.
J'ai géré l'erreur dans copy
partie mais vous ne savez pas comment gérer cette mkdir
Comment puis-je y parvenir? Toute aide serait appréciée
Ce qui concerne
Karthik
avez-vous des autorisations d'écriture?
OriginalL'auteur KK99 | 2012-02-15
Vous devez vous connecter pour publier un commentaire.
Apache Ant
Mkdir
tâche est d'appelerFile.mkdirs()
méthode qui est vulnérables à des conditions de course.File.mkdirs()
n'est pas une opération atomique - je suppose qu'il est mis en œuvre comme une séquence demkdir
appels.Dans le cas d'une distance filsystem il ya une bonne chance que votre hôte obtient connaissance du système de fichiers à des changements dans le milieu de
File.mkdirs()
opération et il échoue.Ant semblait essayer de le réparer comme
Mkdir
code a changé à partir de ce dans 1.8.0dans 1.8.2
alors peut-être que la mise à niveau vers la dernière Fourmi pourrait aider?
Si ce n'est pas certains de la force brute
Mkdir
tâche extension pourrait être créé avec votre propreexecute()
méthode de la mise en œuvre.Si ce n'est pas Trycatch tâche de Fourmi Contrib fonctionne.
il a dit que le changement était entre 1.8.0 et 1.8.2, mise à niveau vers 1.7.x ne va pas aider...
OriginalL'auteur Oleg Mikheev
Pour moi, j'ai eu un problème similaire avec la version 1.9 de l'ant.
J'ai été la suppression d'un répertoire et immédiatement re-création:
Même si le répertoire local (pas un lecteur réseau), l'ajout d'un sommeil de 1 seconde entre les deux opérations résolu le problème pour moi:
OriginalL'auteur Flo
Vous pouvez utiliser la Tâche de COPIE de créer des répertoires (y compris les sous-répertoires).
OriginalL'auteur Andy
Pour moi de résoudre le problème de linux est aussi simple que de courir comme utilisateur sudo
"sudo ant"
OriginalL'auteur kris433
Voici comment je l'ai résolu:
référencé d'build.xml)
OriginalL'auteur user1802053