Mam projekt, który zawiera jeden moduł i pewne zależności. Chciałbym utworzyć słoik, w osobnym katalogu, który zawiera skompilowany moduł. Ponadto chciałbym mieć zależności obecne obok mojego modułu.
Niezależnie od tego, jak przekręcę proces „kompilacji jar” IntelliJ, wyjście mojego modułu wydaje się puste (oprócz pliku META-INF).
źródło
To wciąż jest problem w 2017 roku, mam nadzieję, że pomoże komuś tam! Znalazłem 2 możliwości tworzenia działających słoików pod IntelliJ 2017.2
1. Tworzenie artefaktu z IntelliJ:
Musisz zmienić katalog manifestu:
zamień „java” na „zasoby”
Tak powinno to wyglądać:
Następnie wybierasz zależności, które chcesz spakować W słoiku lub W POBLIŻU pliku jar
Aby zbudować artefakt, przejdź do budowania artefaktów i wybierz opcję „odbuduj”. Stworzy folder „out” z plikiem jar i jego zależnościami.
2. Korzystanie z wtyczki maven-assembly-plugin
Dodaj sekcję kompilacji do pliku pom
Ta procedura utworzy plik jar w folderze „docelowym”
źródło
no main manifest attribute
przyjmować powyższe rozwiązania. Nikt nie wspominał o zmianiepath to manifest
. Dziękuję !!Niedawno miałem ten problem i uważam, że te kroki są łatwe do wykonania, jeśli jakiekolwiek wcześniejsze rozwiązanie lub link nie zawiera szczegółów.
Jak utworzyć za
.jar
pomocą IntelliJ IDEA 14.1.5:źródło
Dla tych, którzy korzystają z obrazów tak jak ja:
File -> Project Structure
źródło
Oto 2 przykłady krok po kroku z projektem maven:
Metoda 1: Zbuduj słoik z maven i pom.xml
na pom.xml dodaj wtyczkę maven-jar-plugin.
zrzut ekranu: 4. otwórz okno projektu maven, klikając ikonę wyszukiwania i wpisz maven,
kliknij czysty, a następnie kliknij zainstaluj
Twój plik jar pojawi się w folderze docelowym
przetestuj swój słoik za pomocą java -jar
Metoda 2: Zbuduj słoik z maven bez zmiany pom.xml
Bardzo ważne!
Plik MANIFEST.MF musi znajdować się w folderze zasobów, a klasa Main.Class musi odnosić się do {pakietu} - {nazwa-klasy-zawierającej-klasę główną}
źródło
Prawdopodobnie jest już trochę za późno, ale udało mi się to rozwiązać w ten sposób -> otwórz za pomocą winrar i usuń ECLIPSEF.RSA i ECLIPSEF.SF w folderze META-INF, a ponadto umieść „Klasa główna: nazwa_klasy głównej” (bez „.class” ) w pliku MANIFEST.MF. Upewnij się, że nacisnąłeś „Enter” dwa razy po ostatnim wierszu, w przeciwnym razie nie zadziała.
źródło
Gdy korzystam z tych rozwiązań, pojawia się następujący błąd:
i rozwiązaniem jest :
Musisz zmienić katalog manifestu:
zmień java na zasoby
źródło
Próbowałem zbudować słoik z wielomodułowej aplikacji Kotlin i otrzymałem notoryczny błąd „brak głównego atrybutu manifestu”. Utworzenie katalogu manifestu
src/main/resources
również nie działało.Zamiast tego, działa podczas tworzenia go
src
bezpośrednio:src/META-INF/MANIFEST.MF
.źródło
Jak mówią ludzie powyżej, ale muszę zwrócić uwagę na jeden punkt. Musisz zaznaczyć pole wyboru:
źródło
Pomysł 8.1.3
Słoik jest w porządku, ponieważ w katalogu „output” znajduje się skompilowane wyjście (project / out / production //)
Myślę, że musisz uruchomić „make” przed budowaniem słoika
dla zależności po prostu zaznacz „pokaż bibliotekę” i wybierz, co chcesz.
źródło
Dzięki Maven możesz użyć tej wtyczki:
źródło
Możesz rzucić okiem na Maven ( http://maven.apache.org ). Możesz użyć go jako głównego procesu kompilacji aplikacji lub po prostu wykonać określone zadania za pomocą okna dialogowego Edytuj konfiguracje. Proces tworzenia pliku JAR modułu w Maven jest dość trywialny, jeśli chcesz, aby zawierał on wszystkie zależności w wykonywalnym pliku JAR, który również jest trywialny.
Jeśli nigdy wcześniej nie korzystałeś z Maven, to chcesz przeczytać Better Builds With Maven .
źródło
Jeśli używasz bibliotek stron trzecich w swoim projekcie lub masz problemy z prawidłowym tworzeniem pliku MANIFEST.MF, mogą wystąpić konflikty podczas uruchamiania plików JAR wygenerowanych przy użyciu
metoda wspomniana powyżej.
Zamiast tego sugeruję, aby utworzyć pusty plik JAR i ręcznie dodać wszystkie inne elementy do wyjściowego katalogu głównego. Cudowny artykuł na blogu dotyczący tej metody można znaleźć tutaj: http://karthicraghupathi.com/2016/07/10/creating-an-executable-jar-in-intellij-idea/ Próbowałem tam wymienionych kroków i wszystko działało dobrze dla mnie!
źródło
Niektóre inne odpowiedzi są bezużyteczne, ponieważ jak tylko ponownie zaimportujesz projekt IntelliJ IDEA z projektu maven, wszystkie zmiany zostaną utracone.
Budowanie słoika musi być uruchamiane przez konfigurację uruchamiania / debugowania, a nie przez ustawienia projektu.
Jetbrains ma ładny opis tego, jak możesz to zrobić tutaj:
https://www.jetbrains.com/help/idea/maven.html
Przewiń w dół do sekcji „Konfigurowanie wyzwalaczy dla celów Maven”.
(Jedyną wadą ich opisu jest to, że ich zrzuty ekranu mają domyślny schemat kolorów czarno-biały zamiast super niesamowitego motywu darcula. Ugh!)
Zasadniczo wystarczy, że otworzysz panel „Projekty Maven”, znajdziesz interesujący projekt (w twoim przypadku projekt, który buduje twój słoik), pod nim znajdziesz cel raju, który chcesz wykonać , (zwykle cel „pakiet” tworzy słoiki), otwierasz na nim menu kontekstowe (kliknij prawym przyciskiem myszy na komputerze z systemem Windows) i pojawi się opcja „Wykonaj przed uruchomieniem / debugowaniem ...” wybierz, a stamtąd zabierze Cię za rękę. Naprawdę proste.
źródło
Jeśli próbujesz zbudować słoik z kotlinem, musisz utworzyć
src/main/java
folder i użyć tego folderu jako lokalizacji dla folderu META-INF.źródło
Oto oficjalna odpowiedź Pomocy IntelliJ IDEA 2018.3 . Próbowałem i działało.
źródło
Mój problem polegał na tym: użyłem Intellij IDEA (wypróbowałem różne wersje) + Gradle. Kiedy skompilowałem projekt i zbudowałem słoik artifacf, jak wskazano w powyższych odpowiedziach, otrzymałem błąd - „brak głównego manifestu…
To rozwiązanie zadziałało dla mnie (specjalne podziękowania dla Thiliny Ashen Gamage (patrz wyżej) za wskazówkę):
Fragment - jeśli korzystasz z bibliotek zewnętrznych i budujesz projekt poprzez Ustawień projektu - Artefakty - Dodaj (+) - Jar - Z modułów zależnych , to prawdopodobnie z powodu błędu programu folder META-INF z plikiem MANIFEST_MF nie zawiera jar. Aby tego uniknąć, utwórz PUSTY plik jar.
Ustawienia projektu - Artefakty - Dodaj (+) - Słoik - PUSTY JAR . Folder META-INF zostanie dodany do folderu zasobów . Następnie wybierz swoją główną klasę. Zobaczysz następującą strukturę słoika: Zwróć uwagę na obecność folderu META-INF Następnie możesz zbudować swój projekt i zbudować artefakty. To rozwiązanie działało również w aplikacjach javaFX.
źródło
Jeśli pracujesz nad projektem spring / mvn, możesz użyć tego polecenia:
Plik jar zostanie zapisany w docelowym directoy.
źródło
Mrówka i Maven są szeroko stosowane. Wolę Ant, wydaje mi się, że jest lżejszy, a Ty, deweloper, masz większą kontrolę. Niektórzy sugerują, że to jego minus :-)
źródło