it-swarm.com.de

Wie generiere ich automatisch eine .jar-Datei in einem Eclipse-Java-Projekt?

Ich habe ein Eclipse-Java-Projekt. Es enthält einen Ordner mit dem Namen "dist". In diesem Ordner befindet sich eine JAR-Datei.

Wie kann ich Dinge in diesem Projekt einrichten, um sicherzustellen, dass diese .jar-Datei jedes Mal aktualisiert wird, wenn eine der .Java-Dateien im Projekt neu kompiliert wurde?

Vielen Dank.

44
Dr. Faust

Erstellen Sie eine Ant-Datei und teilen Sie Eclipse mit, sie zu erstellen. Es gibt nur zwei Schritte, und jeder Schritt ist mit den Schritt-für-Schritt-Anweisungen unten einfach.


Schritt 1 .__ Erstellen Sie eine build.xml-Datei und fügen Sie sie dem Paket-Explorer hinzu:

<?xml version="1.0" ?>
<!-- Configuration of the Ant build system to generate a Jar file --> 
<project name="TestMain" default="CreateJar">
  <target name="CreateJar" description="Create Jar file">
        <jar jarfile="Test.jar" basedir="." includes="*.class" />
  </target>
</project>

Eclipse sollte ungefähr so ​​aussehen wie in der Abbildung unten. Beachten Sie das Ant-Symbol in build.xml .Build.xml in Eclipse Project

Schritt 2 Klicken Sie mit der rechten Maustaste auf den Stammknoten im Projekt . - Wählen Sie Eigenschaften - Wählen Sie Builder - Wählen Sie Neu - Wählen Sie Ant Build - Vervollständigen Sie auf der Registerkarte "Main" den Pfad zur Datei "build.xml" im Ordner " bin ".

Ant builder configurationBuild step - Targets Tab

Überprüfen Sie die Ausgabe

Das Eclipse-Ausgabefenster (Console) sollte nach einem Build Folgendes anzeigen:

Buildfile: /home/<user>/src/Test/build.xml

CreateJar:
         [jar] Building jar: /home/<user>/src/Test/Test.jar
BUILD SUCCESSFUL
Total time: 152 milliseconds
35
Thomas Bratt

Sie können einen Ant-Builder definieren, der eine jar-Task ausführt, um alle Klassendateien im Projekt Zu jaren (mit gesetztem "Refresh project upon completion").

alt text

(Siehe auch " Anpassen von Builds für Ihre Eclipse-Projekte ")

Siehe IBM Artikel: Wie und warum werden benutzerdefinierte Ant-Tasks erstellt

alt text

17
VonC

Ein übliches Muster besteht darin, gegen die Klassendateien im Projekt zu arbeiten (Projekte können anderen Erstellungspfaden für Projekte hinzugefügt und zur Laufzeit beim Testen verwendet werden), sodass Sie die JAR-Dateien während der Entwicklung nicht wirklich benötigen. 

Der allgemeine Ansatz für das Hinzufügen eines automatischen Buildschritts besteht darin, ein Ant-Skript zu schreiben, das in Ihr Projekt einzufügen, und Sie können dann die Ausführung Ihres Ant-Skripts in den Build des Projekts aufnehmen. Da ant also eine ziemlich geradlinige Glaskonstruktionsaufgabe hat, ist dies nicht zu viel Aufwand, wenn Sie die JAR-Datei ständig benötigen. Siehe für einen Starter.

4
djna

Erstellen Sie ein J2EE Utility-Projekt (Util). Damit können Sie eine Verknüpfung mit einem J2EE-Projekt (ProjectX) erstellen. Wenn Sie die Eigenschaften von ProjectX so bearbeiten, dass sie vom Util-Projekt abhängen, wird Util als Util.jar angezeigt. Wenn die Abhängigkeit deklariert ist, erstellt Eclipse die Datei Util.jar, wenn das Util-Projekt erstellt werden muss. Wenn Sie die automatische Erstellung für das Util-Projekt aktiviert haben, wird die JAR-Datei bei jedem Erstellen des Projekts synchron gehalten. Wenn Ihr Zielprojekt kein J2EE-Projekt ist, können Sie diese Lösung zwar verwenden, aber ein übergeordnetes J2EE-Dummy-Projekt verwenden.

Hier ist der Link zur Hilfeseite für die Verwendung der ANT-Task zum Erstellen einer ZIP-Datei in Eclipse: http://help.Eclipse.org/galileo/index.jsp?topic=/org.Eclipse.pde. doc.user/task/pde_feature_generating_ant.htm

Eine alternative Lösung ist die Verwendung des Zip-Plugins. Wir haben dies vor mehr als 5 Jahren verwendet, aber eingestellt, als WSAD die Unterstützung abhängiger Projekte als .jar-Dateien aufnahm.

2
Kelly S. French

Die Antwort von Thomas funktioniert, aber die erzeugte JAR-Datei kann nicht zum Ausführen der Anwendung verwendet werden.

Ich endete mit:

<?xml version="1.0" ?>
<!-- Configuration of the Ant build system to generate a Jar file --> 
<project name="TDSz Data Mover" default="CreateJar">
  <target name="CreateJar" description="Create Jar file">
        <delete file="DataMover.jar"/>
        <jar jarfile="DataMover.jar" basedir="bin/" includes="**/*.class **/Messages*.*" " update="no">
            <zipfileset dir="D:/Java/mylib" erroronmissingarchive="true">
                <include name="*.jar" />
            </zipfileset>  
            <manifest>
                <attribute name="Main-Class" value="some.package.and.app"/>
            </manifest>             
        </jar>
  </target>
</project>

Ich weiß nicht, ob sich seit der Beantwortung dieser Antwort etwas geändert hat, aber es dauerte einige Zeit, bis es wirklich funktionierte. Viele der Lösungen in den Tutorials waren nur Teilantworten ...

Hauptänderungen:

  • Ein Löschen für die JAR-Datei wurde hinzugefügt, da sie nicht neu erstellt wurde, als ich die Ant-Build-Komponente nach dem Ändern der Build-Datei erneut erstellte. 
  • Es wurde ein Manifest hinzugefügt, um die ausführbare Datei ordnungsgemäß festzulegen.
  • Ziehen Sie einige .jar-Dateien als libs ein
  • Ziehen Sie die Message_-Dateien für die NLS-Unterstützung ein

Netbeans macht das so viel einfacher - markieren Sie einfach ein paar Kästchen.

[Bearbeitet, um ein Problem mit einem falsch beendeten JAR-Tag zu beheben und die JAR-Dateien zu ziehen.]

0
Mykael