2010-05-12 19 views
12

Ist es möglich, build.xml Skript mit Maven auszuführen?Execute build.xml mit Maven

Dieses Skript checkt alle meine Projekte und Teilprojekte aus und ich habe mich einfach daran gewöhnt, maven zu verwenden, habe vorher nicht viel von einer Ameise benutzt und ich weiß, dass ant mit Maven benutzt werden kann. Meine Frage ist also: Wie?

Antwort

7

Ich bin wirklich kein großer Fan dieses Ansatzes (entweder verwenden Ant oder Maven, aber nicht ein Bastard-Mix), aber Sie einen externen build.xml mit dem Maven AntRun Plugin verwenden:

<project> 
    ... 
    <build> 
    <plugins> 
     ... 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-antrun-plugin</artifactId> 
     <configuration> 
      <tasks> 
      <taskdef resource="net/sf/antcontrib/antcontrib.properties" 
       classpathref="maven.plugin.classpath" /> 
      <ant antfile="${basedir}/build.xml"> 
       <target name="test"/> 
      </ant> 
      </tasks> 
     </configuration> 
     <dependencies> 
      <dependency> 
      <groupId>ant-contrib</groupId> 
      <artifactId>ant-contrib</artifactId> 
      <version>1.0b3</version> 
      </dependency> 
     </dependencies> 
     </plugin> 
    </plugins> 
    </build> 
</project> 

Und dann laufen mvn antrun:run (oder setzen Sie die Konfiguration in eine execution, wenn Sie das AntRun-Plugin an eine Lebenszyklusphase binden möchten, siehe die Seite Usage).

Update: Wenn Sie Dinge von ant-contrib verwenden, müssen Sie es als Abhängigkeit des Plugins deklarieren. Ich habe die Plugin-Konfiguration aktualisiert, um dies zu berücksichtigen. Beachten Sie auch das Element taskdef, das ich hinzugefügt habe (ich bin mir nicht sicher, dass Sie das Attribut classpathref benötigen).

+0

$ {basedir} ist welcher Ort? Neben der pom.xml? oder ? –

+0

@Gandalf Ja, '$ {basedir}' stellt das Verzeichnis dar, das pom.xml enthält –

+0

Ich habe das mit v1.7 des antrun-plugins versucht und es scheint, als ob das Ziel nun ausgeführt wird: 'mvn antrun: run' –

0

Sie können über die Maven-Ant Plugin Ant-Skripte ausführen, aber warum Ant benötigen, um Ihr Projekt auschecken? Hast du deine Unterprojekte nicht so organisiert, dass sie sich in demselben Baum befinden?

+1

Ich setze ant Ziel zwischen Aufgaben Tags und ich bekomme diesen Fehler 'Problem: Fehler beim Erstellen Aufgabe oder Typ Ziel Ursache: Der Name ist undefiniert.' –

+0

@khmarbaise' Haben Sie nicht organisiert Ihre Unterprojekte zu sein derselbe Baum - was meinst du? –