Zbuduj projekt w JAR automatycznie w Eclipse

171

Mam projekt Eclipse, w którym chcę, aby mój projekt Java został automatycznie wbudowany w plik JAR. Wiem, że mam możliwość wyeksportowania projektu do pliku JAR; jeśli zrobię prawy przycisk myszy; ale naprawdę szukam tego, że tak jak Eclipse automatycznie buduje .classpliki projektu i umieszcza je w folderze docelowym; powinien również automatycznie utworzyć plik JAR i skopiować najnowszy plik JAR w jakimś lub określonym miejscu.

Czy istnieje możliwość skonfigurowania Eclipse w taki sposób, aby automatycznie budować pliki JAR?

Żeby było jasne dla facetów, wystarczająco cierpliwy, by odpowiedzieć na moje pytanie; Nie patrzę na ANT jako rozwiązanie; ponieważ już go używam, ale chciałbym, żeby coś było inicjowane automatycznie albo za pomocą wyzwalacza opartego na czasie, albo natychmiastowego kompilowania ze zmianą.

Priyank
źródło
1
Moja osobista opinia: użyj m2e, integracji maven firmy Eclipse, aby w ramach kompilacji wyświetlał dla ciebie jar. Niedawno próbowałem używać Eclipse bez Mavena i nie mogę uwierzyć, jak prymitywny jest podstawowy program do budowania Java.
Craig Ringer
1
W 2018 roku użyj narzędzia do kompilacji zamiast funkcji specyficznych dla środowiska IDE. Maven kupuje niezależność od IDE i obsługę wiersza poleceń.
Thorbjørn Ravn Andersen
@Craig Ringer - czy jest link, jak to zrobić?
nsandersen

Odpowiedzi:

27

Sprawdź Apache Ant

Możliwe jest użycie Ant do automatycznych kompilacji z zaćmieniem, oto jak


źródło
Używam już Ant Apache do tworzenia kompilacji i tworzenia Jar. Ale to, czego naprawdę szukałem, to obejście mrówek apaczów i bezpośrednie użycie zaćmienia.
Priyank
Przepraszam, nie przejrzałem wcześniej linku do artykułu. Rzeczywiście mówi o tym, czego potrzebuję. Dzięki.
Priyank
1
Odpowiedź Konrada bardziej odpowiada temu, czego szukał PO.
lycono
lycono, nie zgadzam się - OP chciał, aby słoik był aktualizowany, a eksportowanie pliku jar nie próbuje rozwiązać tego problemu.
James Moore
1
W lipcu 2011 r. Artykuł, do którego odwołuje się @Peter, w ogóle nie mówi o tym, jak zbudować plik jar.
James Moore
288

Chcesz .jardescplik. Nie uruchamiają się automatycznie, ale w ciągu 2 kliknięć.

  1. Kliknij prawym przyciskiem myszy swój projekt
  2. Wybierać Export > Java > JAR file
  3. Wybierz dołączone pliki i nazwij wyjściowy plik JAR, a następnie kliknij Next
  4. Zaznacz „Zapisz opis tego .jardescpliku JAR w obszarze roboczym” i wybierz nazwę nowego pliku

Teraz wszystko, co musisz zrobić, to kliknąć .jardescplik prawym przyciskiem myszy i wybrać, Create JARa wyeksportuje go w tym samym miejscu.

Konrad
źródło
Smutne, że ta odpowiedź nie otrzymała więcej głosów (lub najlepszej odpowiedzi) kilka miesięcy temu. No cóż, teraz Konrada nie ma.
Dan Rosenstark
25
W Eclipse Galileo musiałem zamienić Twój krok 1 na Plik -> Eksportuj -> Java -> Plik JAR.
Matt Huggins,
9
Czy istnieje sposób na zautomatyzowanie kroku „kliknięcie prawym przyciskiem myszy -> Utwórz plik JAR”?
Asaf
4
Czy istnieje sposób na zautomatyzowanie kroku „kliknięcie prawym przyciskiem myszy -> Utwórz plik JAR” lub powiązanie go z kombinacją klawiszy?
Pacerier
5
Używam "Eksportuj ... -> Java -> Runnable JAR file", aby stworzyć dokładnie to.
TedTrippin
70

Utwórz plik Ant i powiedz Eclipse, aby go zbudował. Są tylko dwa kroki, a każdy jest łatwy dzięki poniższym instrukcjom krok po kroku.


Krok 1 Utwórz plik build.xml i dodaj do eksploratora pakietów:

<?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 powinno wyglądać jak na poniższym zrzucie ekranu. Zwróć uwagę na ikonę Ant w pliku build.xml. Build.xml w projekcie Eclipse

Krok 2 Kliknij prawym przyciskiem myszy węzeł główny w projekcie. - Wybierz właściwości - Wybierz konstruktorów - Wybierz nowy - Wybierz kompilację Ant - Na karcie Główne podaj ścieżkę do pliku build.xml w folderze bin .

Konfiguracja konstruktora mrówek Krok budowy - zakładka Cele

Sprawdź dane wyjściowe

W oknie wyjściowym Eclipse (o nazwie Console) po kompilacji powinno być wyświetlane następujące okno:

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

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

EDYCJA: Kilka pomocnych komentarzy od @yeoman i @betlista

@yeoman Myślę, że prawidłowe dołączenie to /.class, a nie * .class, ponieważ większość ludzi używa pakietów i dlatego rekursywne wyszukiwanie plików klas ma więcej sensu niż płaskie dołączanie

@betlista Zalecałbym, aby nie mieć pliku build.xml w folderze src

Thomas Bratt
źródło
2
Tak, możesz wybrać cele dla etapu kompilacji w następujący sposób: Po czyszczeniu, kompilacji ręcznej, kompilacji automatycznej i podczas czyszczenia. Auto Build powinno dać ci to, czego chcesz :)
Thomas Bratt
8
Po wypróbowaniu obu, to rozwiązanie wydaje się znacznie lepsze niż rozwiązanie Konrada. Wymaga ręcznego określenia niektórych ścieżek w pliku kompilacji, ale umożliwia automatyczne budowanie (zamiast 2 kliknięć) i pozwala na łatwe dostosowywanie (na przykład skopiuj jar po kompilacji). Oto jak zbudować plik jar, mając plik kompilacji w katalogu głównym i wiele zagnieżdżonych poziomów pakietów:<jar jarfile="dist/mypackage.jar" basedir="bin/" includes="**/*.class" />
worldsayshi
3
+1 Dlaczego nie jest to akceptowana odpowiedź, a nawet ta, która nie jest najbardziej popularna?
Juan Garcia
2
Dziękuję Ci bardzo. Zalecałbym nie mieć build.xmlw folderze src, ale reszta działa dobrze, niesamowicie!
Betlista
1
Myślę, że poprawnym włączeniem byłoby / .class, a nie * .class, ponieważ większość ludzi używa pakietów i dlatego rekursywne wyszukiwanie plików klas ma więcej sensu niż płaskie włączanie. Do tego czasu usunie moje +1, ponieważ odpowiedź zwykle nie działa tak, jak jest.
yeoman,
13

Jest to możliwe dzięki zdefiniowaniu niestandardowego Konstruktora w zaćmieniu (zobacz link w odpowiedzi Petera). Jednak jeśli projekt nie jest bardzo mały, może to spowolnić obszar roboczy w nieakceptowany sposób. Autobuild dla plików klas odbywa się przyrostowo, tzn. Rekompilowane są tylko te klasy, na które zmiana ma wpływ, ale plik JAR będzie musiał zostać odbudowany i całkowicie skopiowany za każdym razem, gdy zapiszesz zmianę.

Michael Borgwardt
źródło
1

Korzystając z powyższej odpowiedzi Thomasa Bratta , upewnij się, że plik build.xml jest poprawnie skonfigurowany:

<?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="bin/" includes="**/*.class" />
  </target>
</project>

(Zwróć uwagę na podwójną gwiazdkę - informuje ona kompilację, aby szukała plików .class we wszystkich podkatalogach).

Hugo Leote
źródło
0

Tworzenie programu uruchamiającego konstruktora jest problemem, ponieważ 2 projekty nie mogą mieć tej samej nazwy kompilacji narzędzia zewnętrznego. Każde imię musi być niepowtarzalne. Obecnie mam do czynienia z tym problemem, aby zautomatyzować moją kompilację i skopiować plik JAR do lokalizacji zewnętrznej.

Używam IBM Zip Builder, ale to tylko pomoc, ale nie robi tego naprawdę.

Ludzie mogą spróbować użyć wtyczki IBM ZIP Creation. http://www.ibm.com/developerworks/websphere/library/techarticles/0112_deboer/deboer2.html#download

Anand Bansal
źródło