Maven-Antrun und Abhängigkeiten
(Siehe änderungen unten.)
Den Grund kann ich nicht einfach den classpath, ist, weil ich brauchen, um zu verwalten, einige nicht-java-Bibliotheken, und ich bin der Zusammenstellung einer non-java-Projekt.
Ich versuche, maven-Abhängigkeiten in ein antrun nennen, nach der Dokumentation auf dem maven site:
http://maven.apache.org/plugins/maven-antrun-plugin/examples/classpaths.html
Unten auf der Seite:
<property name="mvn.dependency.jar"
refid="maven.dependency.my.group.id:my.artifact.id:classifier:jar.path"/>
<echo message="My Dependency JAR-Path: ${mvn.dependency.jar}"/>
Kann ich nicht machen diese Arbeit, egal, wie ich versuche. Ich habe versucht ${} um die refid Inhalt, ich habe versucht, Doppelpunkte, Punkte, etc.. als Trennzeichen in jeder Weise, die ich mir denken kann.
Kann mir jemand sagen, was das refid sollte wirklich Aussehen für einige gemeinsame Abhängigkeit?
EDIT:
Vielen Dank für Ihre Antwort.
Mit Ihrem Beispiel SingleShot, ich habe Folgendes:
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<id>create-messages</id>
<phase>compile</phase>
<configuration>
<tasks>
<property name="build.compiler" value="extJavac"/>
<property name="compile_classpath" refid="maven.compile.classpath"/>
<property name="runtime_classpath" refid="maven.runtime.classpath"/>
<property name="test_classpath" refid="maven.test.classpath"/>
<property name="plugin_classpath" refid="maven.plugin.classpath"/>
<property name="log4j.jar" refid="log4j:log4j:jar"/>
<echo message="Where is the Log4J JAR?: ${log4j.jar}"/>
</tasks>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.14</version>
</dependency>
</dependencies>
</plugin>
Und hier ist, was ich bekomme beim ausführen von mvn compile:
[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Building Chat Component
[INFO] task-segment: [compile]
[INFO] ------------------------------------------------------------------------
Downloading: http://<redacted>/content/groups/public/log4j/log4j/1.2.14/log4j-1.2.14.pom
2K downloaded
Downloading: http://<redacted>/content/groups/public/log4j/log4j/1.2.14/log4j-1.2.14.jar
358K downloaded
[INFO] [antrun:run {execution: create-messages}]
[INFO] Executing tasks
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] Error executing ant tasks
Embedded error: Reference log4j:log4j:jar not found.
[INFO] ------------------------------------------------------------------------
[INFO] For more information, run Maven with the -e switch
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 3 seconds
[INFO] Finished at: Fri Oct 16 14:54:19 PDT 2009
[INFO] Final Memory: 7M/80M
[INFO] ------------------------------------------------------------------------
EDIT (2):
Blick auf den sourcecode verknüpft entschied ich mich, um "mvn -X compile" und grep für "Speichern", macht sich ein Haufen log-Ausgabe, wo die Dinge sind immer gespeichert.
Interesse sind die Fakten, die die Abhängigkeit ich bin die explizite Angabe von nicht mit in der Liste, und, dass ich beim wechseln auf einen Schlüssel basierend auf einem der Einträge ich tun sehen, ich bekomme immer noch den Fehler.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Basiert auf dem code, der SingleShot verbunden, und zufällige Stossen, bis es funktionierte, hier ist, wie ich dieses problem "arbeiten", (ich sage in Anführungszeichen, weil es fühlt sich sehr schwach.)
Hier ist der Weg, um es richtig Arbeit:
Einige wichtige Dinge zu beachten: Sie nicht Verwendung des maven-dependency als refid in der Einstellung der ant-Eigenschaft. Sie haben die Verwendung von ${} um die maven-var-Wert.
Scheint es, dass die Abhängigkeit muss in der top-level-dependency-Liste, so dass log4j eine Abhängigkeit von der antrun-plugin nicht setzen, um das plugin trotzdem, dass ich sehen kann.
Alle Pfad-Separatoren sind Punkte (.), keine Doppelpunkte (:), das ist der Grund, warum ich letztlich überprüft, meine eigene Antwort als richtig an.
Als Nachtrag zu Aaron H. s Antwort oben, ich musste das plugin ist auf version 1.3 für die, die tatsächlich arbeiten. Ich wurde verwenden, ohne eine bestimmte version und war immer 1.1 (wo nichts zu funktionieren scheint).
Ohne ein Beispiel von dem, was Sie eingegeben haben in Ihrem POM, das ist schwer zu sagen, aber betrachten wir ein konkretes Beispiel. Lassen Sie uns sagen, dass Ihre POM Referenzen log4j (groupId=log4j, artifactId=log4j). Ich glaube, das ist, wie würden Sie die Referenz, die GLAS in Ihrer Ant-Datei:
Idealerweise sollten Sie nicht haben, um Referenz-spezifische Gläser, sondern, auf die gesamte Klassenpfad für den entsprechenden Bereich, wie der etwas spärliche Dokumentation für das plug-in zeigt.
Wenn Sie immer noch Probleme haben, poste bitte die
<dependency>
tag für ein Maven-POM-Abhängigkeit, die Sie verwenden, und kann ich versuchen, genauer zu sein.Ich schaute auf die der plugin-code zu bestätigen.
Dies funktioniert für mich.
http://maven.apache.org/plugins/maven-antrun-plugin/examples/classpaths.html hat die Erklärung, wie Referenz-Abhängigkeiten bilden den ant-classpath.
Es ist ein Fehler in der Dokumentation. Der Pfad sollte von der form:
Damit die richtigen Schlüssel für Ihre log4j dependency wäre:
Beachten Sie auch, dass es sein sollte
value=
eher alsrefid=
, so dass die volle Eigenschaft:Ich habe eine vorhandene ant und wir geplant, um (neue) maven zu nennen. Ich auf Probleme gestoßen, die ich kann mich nicht erinnern, klar, aber es ist in Bezug auf class-path, vielleicht gerade so wie Euch.
Das problem ist, die "Ameise" sind wir mit "täglich" ist ein shell-Skript, das festlegt, Klasse Wege, die beide auf XNIX und Windows. Ich habe nicht verglichen, class-path gesetzt und den maven, aber mein test zeigte, dass Sie nicht passen und die Ameise laufen nicht mit einige Pfade übergeben, um es von maven.
Was ich verwende, ist "exec-maven-plugin", und führen Sie ant als externes Programm mit einigen Argumenten angewendet werden. Dies ist sicher, um zu arbeiten, sondern fügt zusätzliche Abhängigkeiten, obwohl.