Gibt es eine Möglichkeit, eine ant build.xml-Datei automatisch aus Eclipse zu generieren?

76

In Eclipse habe ich festgestellt, dass ich problemlos eine Ant-Build-Datei für mein Projekt exportieren kann . Es enthält Verweise auf Bibliotheken von Drittanbietern und einige Basisziele. Ich verwende es aus meiner globalen Build-Datei. Das einzige, was mich daran stört, ist, dass wir, wenn etwas in der Projektstruktur geändert wird (wie das Hinzufügen einer neuen Bibliothek eines Drittanbieters), darüber nachdenken müssen (ja, das kann manchmal schwierig sein!), Diese build.xml-Datei neu zu generieren. Ich frage mich, ob jemand hier eine Möglichkeit kennt, es automatisch zu aktualisieren. Mit "automatisch" meine ich, dass es nicht notwendig wäre, Eclipse explizit zu bitten, es jedes Mal neu zu generieren, wenn es benötigt wird. Ich weiß allerdings nicht, was der Auslöser sein könnte ...

Irgendwelche Gedanken oder Kenntnisse dazu?

Vielen Dank!

MJ

Joanis
quelle
1
Haben Sie versucht, einen benutzerdefinierten Builder-Schritt hinzuzufügen?
Kelly S. French
Ich bin mir nicht sicher, wie ich genau vorgehen soll. Ich habe mir Projektbauer angesehen. Ich denke, da könnte etwas sein ... Ich könnte wahrscheinlich einen Builder hinzufügen, der die Datei build.xml generiert, sobald der Haupt-Java-Builder fertig ist. Nennen Sie das einen Builder-Schritt? Ich könnte dies versuchen, wenn ich eine Ahnung hätte, wie ich die Aktion export ant buildfile für das Projekt programmgesteuert aufrufen kann. Ich bezweifle, dass es überhaupt möglich ist.
Joanis
Hallo M. Joanis, welche Lösung haben Sie endlich gefunden? Ich versuche genau das Gleiche zu erreichen, daher wäre es schön, wenn Sie Ihre Erkenntnisse teilen könnten.
theDmi
Hallo DMM, ich musste diese Datei noch nicht aktualisieren. Ich habe mich also nicht mehr lange darum gekümmert, einen Weg zu finden, es automatisch zu aktualisieren. Angesichts der Einfachheit der Dateistruktur würde ich wahrscheinlich ein Skript schreiben, das sie generiert (wobei die IDE und der Erstellungsprozess gleichzeitig entkoppelt bleiben). Ich habe viele Ziele automatisch generiert, aber die meisten von ihnen spielen in der IDE keine Rolle, daher habe ich nur 3-4 Haupt-Apps. Hängt von Ihren spezifischen Bedürfnissen ab ...
Joanis

Antworten:

69

Klicken Sie mit der rechten Maustaste auf ein Eclipse-Projekt, dann auf "Exportieren", dann auf "Allgemein" und dann auf "Ant-Build-Dateien". Ich denke jedoch nicht, dass es möglich ist, das Ausgabeformat anzupassen.

Guillaume
quelle
Entschuldigung, ich habe einen Hinweis zu "automatisch" hinzugefügt. Wie gesagt, ich weiß, dass ich eine solche Datei einfach generieren und exportieren kann. Was mich stört, ist, dass ich Eclipse anweisen muss, es jedes Mal neu zu generieren, wenn es getan werden muss. Ich wäre an einer Möglichkeit interessiert, diese Aktion "Export ant Buildfile" für meine Projekte automatisch auszulösen. Ich sehe (bisher) kein Problem mit dem Ausgabeformat.
Joanis
Dann denke ich nicht, dass es in Standard-Eclipse möglich ist. Vielleicht erlaubt es ein Plugin ...
Guillaume
1
Dies scheint die build.xml für die Webprojekte zu generieren, aber nicht für das Ohr. Kann ich automatisch eine build.xml für die Ohrdatei generieren?
Mark W
Momentan ist diese Funktion im Eclipse Java Plugin vorhanden. Sie benötigen das Web Tools Platform-Plugin und seine J2EE-Perspektive.
Guillaume
5

Ich habe versucht, dasselbe selbst zu tun. Was ich fand, war, dass das "Export Ant Buildfile" in der Datei org.eclipse.ant.internal.ui.datatransfer.AntBuildfileExportPage.java gestartet wird. Dies befindet sich im Plugin org.eclipse.ant.ui.

Verwenden Sie zum Anzeigen der Quelle die Plug-In-Entwicklungsperspektive und öffnen Sie die Plug-In-Ansicht. Klicken Sie dann mit der rechten Maustaste auf das Plugin org.eclipse.ant.ui und wählen Sie Importieren als> Quellprojekt.

Mein Plan ist es, ein Java-Programm zu erstellen, mit dem die Generierung von Ant-Builddateien programmgesteuert gestartet und bei jedem Erstellen in einer Ant-Datei aufgerufen werden kann, indem die Ant-Datei zu den Buildern meiner Projekte hinzugefügt wird (Klicken Sie mit der rechten Maustaste auf die Einstellungen eines Projekts unter den Buildern Tab).

Tristan Ratchford
quelle
2
Sieht nach einem vielversprechenden Weg aus. Sie scheinen ein gutes Verständnis der Eclipse-Plugin-Architektur zu haben. Wir würden uns freuen, wenn Sie uns über Ihre Fortschritte auf dem Laufenden halten. Vielen Dank!
Joanis
Update: Leider hat mir meine Arbeit nicht genug Zeit gegeben, um sie umzusetzen. Stattdessen wurde es zu einem Teamritual, dass das Team jedes Mal, wenn wir eine neue Abhängigkeit hinzufügten, die Build-Dateien erneut exportierte. Es ist nicht ideal, aber es erzwingt sich selbst, denn wenn jemand versucht hat, einen Build auf dem Server auszuführen, ohne die Build-Dateien zu exportieren, ist er normalerweise kaputt gegangen.
Tristan Ratchford
4

Ich hatte das gleiche Problem, unsere Arbeitsumgebung basiert auf Eclipse-Java-Projekten, und wir mussten automatisch eine ANT-Datei erstellen, damit wir einen Server für die kontinuierliche Integration verwenden konnten (in unserem Fall Jenkins).

Wir haben unser eigenes Eclipse Java to Ant-Tool eingeführt, das jetzt auf GitHub verfügbar ist:

Ameise-Build-für-Java

Um es zu verwenden, rufen Sie an:

java -jar ant-build-for-java.jar <folder with repositories> [<.userlibraries file>]

Das erste Argument ist der Ordner mit den Repositorys. Der Ordner wird rekursiv nach .projectDateien durchsucht . Das Tool erstellt eine build.xmlim angegebenen Ordner.

Optional kann das zweite Argument eine exportierte .userlibraries-Datei aus Eclipse sein, die benötigt wird, wenn eines der Projekte Eclipse-Benutzerbibliotheken verwendet. Das Tool wurde nur mit Benutzerbibliotheken unter Verwendung relativer Pfade getestet. So verwenden wir sie in unserem Repo. Dies bedeutet, dass sich JARs und andere Archive, die von Projekten benötigt werden, in einem Eclipse-Projekt befinden und von dort aus referenziert werden.

Das Tool unterstützt nur Abhängigkeiten von anderen Eclipse-Projekten und von Eclipse-Benutzerbibliotheken.

JBischof
quelle
2

Schauen Sie sich die .classpath-Datei in Ihrem Projekt an, die wahrscheinlich die meisten gewünschten Informationen enthält. Die einfachste Möglichkeit besteht darin, Ihren eigenen "build.xml-Export" zu rollen, dh den Klassenpfad während des Builds selbst in eine neue build.xml zu verarbeiten und ihn dann mit einer ant-Unteraufgabe aufzurufen.

Das Parsen von ein wenig XML klingt für mich viel einfacher als das Einbinden in Eclipse JDT.

Jan Schiefer
quelle
1
Ich stimme absolut zu, dass das Parsen einer XML-Datei viel ansprechender ist als das Schreiben eines Eclipse-Plugins oder ähnliches. Ihr Vorschlag ist interessant, aber ist die .classpath-Datei nicht "ein bisschen" prägnant? Meins bietet 5 Wege und das wars. Das Schöne an der exportierten Ant-Build-Datei ist, dass sie nicht nur ein Ziel für die Erstellung des Ganzen darstellt, sondern auch korrekte Ziele für die Ausführung von JUnit-Tests. Ich werde mir das merken.
Joanis
Guter Punkt. Ich würde erwarten, dass Eclipse auch die "Projektnatur" berücksichtigt, wenn bestimmt wird, welche Ziele in den Build-Dateien generiert werden sollen. Sie können überprüfen, wie Eclipse die Datei build.xml generiert, da sie intern ant verwendet. Aber das bringt Sie zurück zu einem "Wissenschaftsprojekt", um diese Eclipse-Interna zu verstehen. Vielleicht sind die Builder-Schritte wirklich die richtige Option.
Jan Schiefer
2

Wenn Sie nur die Klassenpfadeinträge benötigen, gehe ich wie folgt vor, um den Eclipse-Erstellungspfad zu verwenden.

<xmlproperty file=".classpath" collapseAttributes="true" delimiter=";" />

Stellen Sie dann diesen Wert im Pfad ein

<path id="eclipse.classpath">
    <pathelement path="${classpath.classpathentry.path}"/>
</path>


<target name="compile" depends="init">

    <javac srcdir="${src}" destdir="${build}" updatedProperty="compiled">
        <classpath refid="eclipse.classpath"/>
    </javac>
</target>
Scott
quelle
2

Ich bin derjenige, der den Ant-Exportfilter an Eclipse gespendet hat. Ich habe die automatische Exportfunktion hinzugefügt, jedoch nur zu meinem persönlichen Plug-In eclipse2ant , das ich weiterhin pflege , um Fehlerkorrekturen zu koordinieren.

Leider habe ich keine Zeit, es mit den offiziellen Eclipse-Builds zusammenzuführen.

J2G
quelle
0
  • Wählen Sie im Hauptmenü Datei> Exportieren (oder klicken Sie mit der rechten Maustaste auf den Projektnamen und wählen Sie Exportieren> Exportieren… ).
  • Wählen Sie im Dialogfeld "Exportieren" die Option "Allgemein"> "Ant-Build-Dateien" wie folgt aus: Geben Sie hier die Bildbeschreibung ein

  • Klicken Sie auf Weiter . Im Bildschirm "Generate Ant Buildfiless":

    • Überprüfen Sie das Projekt in der Liste.
    • Deaktivieren Sie die Option "Ziel zum Kompilieren eines Projekts mit dem Eclipse-Compiler erstellen", da eine von Eclipse unabhängige Build-Datei erstellt werden soll.
    • Belassen Sie den Namen für Ant-Builddatei als Standard: build.xml

Geben Sie hier die Bildbeschreibung ein

  • Klicken Sie auf Fertig stellen . Eclipse generiert die build.xmlDatei im Projektverzeichnis wie folgt:
    Geben Sie hier die Bildbeschreibung ein
  • Doppelklicken Sie auf die build.xmlDatei, um ihren Inhalt im Ant-Editor zu öffnen: Geben Sie hier die Bildbeschreibung ein

Quelle

Premraj
quelle