Chemin de taskdef?
Je suis la définition d'une nouvelle tâche Ant.
J'ai exporté comme un pot et ajouté à mon buildfile:
<taskdef classname="X" classpath="Y.jar"/>
Le problème est que cela échoue lors de l'exécution.
Il me dit qu'il ne trouve pas la classe.
En ajoutant le jar au classpath, c'est corrigé.
Ma question est: Est-il possible que je peux utiliser pour mon pot de l'Ant buildfile, sans modifier le classpath?
OriginalL'auteur computealot | 2010-12-22
Vous devez vous connecter pour publier un commentaire.
Si vous connaissez le chemin d'accès de votre pot, à l'intérieur de script ant, vous pouvez définir le chemin de votre propre tâche.
OriginalL'auteur guinoise
Oui. Je suis en supposant que vous avez regardé la doc pour
taskdef
, qui montre simplement le nom de la tâche et la mise en œuvre de la classe. Cependant,taskdef
sous-classestypedef
, et si vous regardez la doc pour le second point, vous verrez que il y a également unclasspath
attribut.CEPENDANT, à l'aide de cet attribut signifie que vos scripts ant sont liés à un environnement particulier; ils ne sont pas très portable. Une bien meilleure approche est de faire passer le chemin de la classe en Ant, à l'aide de la
-lib
invocation option.CLASSPATH
variable d'environnement, n'en ont pas. Le supprimer de votre configuration de l'environnement, et prendre l'habitude de spécifier explicitement les chemins de classe. Parce que sinon, vous allez vous retrouver avec un dur-à-debug problème où une bibliothèque est chargé à partir de votre classpath et vous ne l'attendez pas. Ou quelqu'un d'autre ne peut pas exécuter votre code, car il/elle n'a pas le mêmeCLASSPATH
variable d'environnement.Je ne vois pas pourquoi c'est une bien meilleure approche. En précisant les chemins de classe avec le
-lib
option permet à l'utilisateur conscient de ces chemins. Vous avez encore le besoin d'indiquer à l'utilisateur où chercher pour eux (par exemple, dans le fichier readme, le fichier d'aide ou d'un écho du message). Ou vous pouvez décider de restructurer votre projet hiérarchie des répertoires à inclure les libs dans un sous répertoire, de devenir "de l'environnement." Un script de compilation devez prendre soin de ces détails et, idéalement, de produire un objet sensible avec la valeur par défautant
invocation.OriginalL'auteur Anon