Wie Sie Apache Ant dazu bringen, Ivy zu erkennen

7720
Steve

Ich versuche, Apache Ivy zu installieren, aber ich kann sie nicht erkennen.

Per Apache Ivy-Installationsanweisung habe ich Ivy von osuosl.org Ivy-Archiven heruntergeladen, entpackt und die .jar-Datei dort kopiert, wo sie von ant angezeigt werden kann. Jeder Efeu-abhängige Build, den ich versuche, schlägt jedoch wie folgt fehl:

$ ant Buildfile: /home/ec2-user/ivy/apache-ivy-2.3.0/build.xml  init-ivy: [taskdef] Could not load definitions from resource org/apache/ivy/ant/antlib.xml. It could not be found.  retrieve-all:  BUILD FAILED /home/ec2-user/ivy/apache-ivy-2.3.0/build.xml:55: Problem: failed to create task or type antlib:org.apache.ivy.ant:retrieve Cause: The name is undefined. Action: Check the spelling. Action: Check that any custom tasks/types have been declared. Action: Check that any <presetdef>/<macrodef> declarations have taken place. No types or tasks have been defined in this namespace yet  This appears to be an antlib declaration.  Action: Check that the implementing library exists in one of: -/usr/share/ant/lib -/home/ec2-user/.ant/lib -a directory added on the command line with the -lib argument 

Ich habe herumgesucht, und jede Seite, die ich mir anschaue, scheint mir zuzustimmen, dass ich nur die Ivy-Jar-Datei installieren muss, aber dies scheint nicht zu helfen. Ich habe es versucht:

  • Kopieren von ivy-2.3.0.jar nach / usr / share / ant / lib und / oder ~ / .ant / lib
  • Dasselbe, aber umbenannt in ivy.jar
  • Hinzufügen -lib /path/to/ivy-2.3.0.jarzur Ameise Befehl
  • All dies im Verzeichnis ivy oder im Verzeichnis src / example / hello-ivy

Interessanterweise antgelingt die Ausführung im Verzeichnis src / example / go-ivy . Aber das hilft anderen Efeu-basierten Builds nicht.

Ich muss etwas Quälendes offensichtliches vermissen, aber ich kann nicht sehen, was es ist. Irgendwelche Ideen?

(Dies ist unter "Amazon Linux AMI Release 2013.09")

2

2 Antworten auf die Frage

1
Steve

Ich stellte die gleiche Frage in der Liste der Ivy-Benutzer ab und erhielt eine Antwort: http://mail-archives.apache.org/mod_mbox/ant-ivy-user/201402.mbox/%3C52FCAF1B.40903%40reast.net % 3E . Es stellte sich heraus, dass ich vor dem Aufruf von ant einfach den folgenden Befehl ausführen musste:

export ANT_HOME=/usr/share/ant/ 

Es scheint, dass, während ant vorschlägt, Dateien in / usr / share / ant / lib zu platzieren, es nicht wirklich dort aussieht, wenn Sie ANT_HOME setzen.

+1 Sie haben mindestens einer Person geholfen. Es wird nicht einmal in ~ / .ant / lib aussehen, wenn dies nicht definiert ist. user606723 vor 10 Jahren 0
0
Mark O'Connor

Ich habe diese Frage zu Stackoverflow beantwortet:

Efeu kann eine Abhängigkeit nicht beheben, die keine Ursache findet . Ich füge es inline unten hinzu:


ANT kann das Efeugefäß nicht finden. Muss an einem der folgenden Orte platziert werden:

  • $ ANT_HOME / lib
  • $ HOME / .ant / lib

Efeu aktivieren

Ivy ist als Antilib verpackt. Um dies zu ermöglichen, müssen Sie Folgendes tun

1) Deklarieren Sie den Efeu-Namespace oben in der Build-Datei

<project ..... xmlns:ivy="antlib:org.apache.ivy.ant"> 

2) Fügen Sie den Efeu-Behälter in einem der Bibliotheksverzeichnisse ein

Ihre Fehlermeldung zeigt einige der möglichen Positionen für Antilibs an:

This appears to be an antlib declaration.  Action: Check that the implementing library exists in one of: -C:\Users\Simon\eclipse\plugins\org.apache.ant_1.8.2.v20120109-1030\lib -C:\Users\Simon\.ant\lib -a directory added on the command line with the -lib argument 

Hinweis:

Das Schöne an Antlib ist, dass Sie die Taskdef-Funktion nicht ausführen müssen (dies ist optional, wenn Sie das Efeu-Gefäß an einem anderen Ort ablegen möchten).

Wie man einen Build bootstrap

Obwohl Efeu ein ANT-Unterprojekt ist, wird der Efeu aus unerklärlichen Gründen nicht mit ANT verpackt.

Normalerweise füge ich den folgenden Dateien ein, um eine neue Umgebung einzurichten:

<target name="bootstrap" description="Used to install the ivy task jar"> <mkdir dir="$/.ant/lib"/> <get dest="$/.ant/lib/ivy.jar" src="http://search.maven.org/remotecontent?filepath=org/apache/ivy/ivy/2.2.0/ivy-2.2.0.jar"/> </target> 

Es lädt das Efeu-Gefäß von Maven Central herunter.

Da alle anderen ANT-Aufgaben anschließend mit Efeu heruntergeladen werden können, lehnen nur wenige Menschen dieses kleine Stück Häßlichkeit oben in der Build-Datei ab.

Vielen Dank. Ich habe diese Antwort gesehen und sie beschreibt die genaue Fehlermeldung, die ich bekomme, aber die vorgeschlagenen Korrekturen scheinen nicht zu helfen. In Bezug auf (1) sehe ich dieses Problem sogar bei Ivy-Beispielprojekten wie Apache-Ivy-2.3.0 / src / example / hello-ivy. Die Datei build.xml für dieses Beispielprojekt enthält die Deklaration xmlns: ivy. In Bezug auf (2) habe ich alles versucht, was ich mir vorstellen kann, um das Efeu-Glas einzubauen, wie in meiner Frage beschrieben. Haben Sie weitere Vorschläge, um herauszufinden, warum Ant die JAR-Datei nicht erkennt? Steve vor 10 Jahren 0