Saya punya proyek yang berisi modul tunggal, dan beberapa dependensi. Saya ingin membuat toples, di direktori terpisah, yang berisi modul yang dikompilasi. Selain itu, saya ingin agar dependensi hadir di sebelah modul saya.
Tidak peduli bagaimana saya memutar proses "build jar" IntelliJ, output modul saya tampak kosong (selain file META-INF).
sumber
Ini masih menjadi masalah di tahun 2017, saya harap ini akan membantu seseorang di luar sana! Saya menemukan 2 kemungkinan untuk membuat stoples yang berfungsi di bawah IntelliJ 2017.2
1. Membuat artefak dari IntelliJ:
Anda harus mengubah direktori manifes:
ganti "java" dengan "resources"
Begini tampilannya:
Kemudian Anda memilih dependensi apa yang ingin Anda kemas DI jar Anda, atau DEKAT file jar Anda
Untuk membangun artefak Anda pergi untuk membangun artefak dan pilih "membangun kembali". Ini akan membuat folder "keluar" dengan file jar Anda dan dependensinya.
2. Menggunakan maven-assembly-plugin
Tambahkan bagian build ke file pom
Prosedur ini akan membuat file jar di bawah folder "target"
sumber
no main manifest attribute
mengadopsi solusi di atas. Tidak ada yang menyebutkan mengubahpath to manifest
. Thnx !!Baru-baru ini saya mengalami masalah ini dan berpikir langkah-langkah ini mudah diikuti jika ada solusi atau tautan sebelumnya yang hilang detail.
Cara membuat
.jar
IntelliJ IDEA 14.1.5 menggunakan:sumber
Bagi mereka yang mendapat manfaat dari gambar seperti yang saya lakukan:
File -> Project Structure
sumber
Berikut adalah 2 contoh dengan proyek pakar, langkah demi langkah:
Metode 1: Buat toples dengan maven dan pom.xml
di pom.xml, tambahkan maven-jar-plugin.
tangkapan layar: 4. buka kotak proyek pakar dengan mengklik ikon pencarian dan ketik pakar,
klik bersih, lalu klik instal
file jar Anda akan muncul di dalam folder target
uji toples Anda menggunakan java -jar
Metode 2: Buat toples dengan pakar tanpa perubahan pom.xml
Sangat penting!
MANIFEST.MF perlu berada di folder sumber daya Anda dan Main.Class perlu merujuk ke {package} - {class-name-that-berisi-main-class}
sumber
Mungkin agak terlambat, tapi saya berhasil menyelesaikannya dengan cara ini -> buka dengan winrar dan hapus ECLIPSEF.RSA dan ECLIPSEF.SF di folder META-INF, terlebih lagi masukkan "Kelas-utama: main_class_name" (tanpa ".class" ) di MANIFEST.MF. Pastikan Anda menekan "Enter" dua kali setelah baris terakhir, jika tidak maka tidak akan berfungsi.
sumber
Ketika saya menggunakan solusi ini kesalahan ini datang:
dan solusinya adalah :
Anda harus mengubah direktori manifes:
ubah java menjadi sumber daya
sumber
Saya mencoba membuat toples dari aplikasi Kotlin multi-modul dan mendapatkan kesalahan 'tidak ada atribut manifes utama' yang terkenal. Membuat direktori manifes di
src/main/resources
tidak berhasil.Sebaliknya, ia bekerja saat membuat dalam
src
langsung:src/META-INF/MANIFEST.MF
.sumber
Seperti yang dikatakan orang-orang di atas, tetapi saya harus mencatat satu poin. Anda harus mencentang kotak centang:
sumber
Ide 8.1.3
Jar ok, karena ada output yang dikompilasi di direktori 'output' (proyek / keluar / produksi //)
Saya kira, Anda harus menjalankan 'make' sebelum membuat toples
untuk dependensi cukup periksa "tunjukkan perpustakaan" dan pilih yang Anda inginkan.
sumber
Dengan Maven Anda dapat menggunakan plugin ini:
sumber
Anda mungkin ingin melihat Maven ( http://maven.apache.org ). Anda dapat menggunakannya baik sebagai proses pembuatan utama untuk aplikasi Anda, atau hanya untuk melakukan tugas-tugas tertentu melalui dialog Edit Konfigurasi. Proses membuat JAR modul dalam Maven cukup sepele, jika Anda ingin menyertakan semua dependensi dalam JAR yang dapat dieksekusi sendiri yang juga sepele.
Jika Anda belum pernah menggunakan Maven sebelumnya maka Anda ingin membaca Better Builds With Maven .
sumber
Jika Anda menggunakan perpustakaan pihak ketiga dengan proyek Anda atau jika Anda memiliki masalah dengan membuat file MANIFEST.MF dengan benar, mungkin ada konflik ketika menjalankan file JAR yang dihasilkan menggunakan
metode yang disebutkan di atas.
Sebagai gantinya saya menyarankan Anda untuk membuat JAR kosong dan menambahkan semua elemen lain ke output root secara manual. Artikel blog yang luar biasa untuk metode ini dapat ditemukan di sini: http://karthicraghupathi.com/2016/07/10/creating-an-executable-jar-in-intellij-idea/ Saya mencoba langkah-langkah yang disebutkan di sana dan semuanya bekerja dengan baik untuk saya!
sumber
Beberapa jawaban lain tidak berguna karena segera setelah Anda mengimpor kembali proyek IntelliJ IDEA dari proyek pakar, semua perubahan akan hilang.
Pembuatan toples perlu dipicu oleh konfigurasi jalankan / debug, bukan oleh pengaturan proyek.
Jetbrains memiliki deskripsi yang bagus tentang bagaimana Anda dapat mencapai ini di sini:
https://www.jetbrains.com/help/idea/maven.html
Gulir ke bawah ke bagian yang disebut "Mengkonfigurasi pemicu untuk tujuan Maven".
(Satu-satunya kelemahan dari deskripsi mereka adalah tangkapan layar mereka berada dalam skema warna hitam-putih standar, alih-alih tema darcula yang luar biasa. Ugh!)
Jadi, pada dasarnya, apa yang Anda lakukan adalah Anda membuka panel "Proyek Maven", Anda menemukan proyek yang menarik, (dalam kasus Anda, proyek yang membangun toples Anda,) di bawahnya Anda menemukan tujuan pakar yang ingin Anda jalankan , (biasanya tujuan "paket" membuat guci,) Anda membuka menu konteks di atasnya, (klik kanan pada mesin Windows,) dan akan ada opsi "Jalankan sebelum Jalankan / Debug ..." yang Anda bisa pilih dan itu akan membawamu dengan tangan dari sana. Sangat mudah.
sumber
Jika Anda mencoba membuat toples dengan kotlin, Anda perlu membuat
src/main/java
folder dan menggunakan folder ini sebagai lokasi untuk folder META-INF.sumber
Inilah jawaban resmi Bantuan IntelliJ IDEA 2018.3 . Saya mencoba dan itu berhasil.
sumber
Masalah saya adalah ini: Saya menggunakan Intellij IDEA (mencoba berbagai versi) + Gradle. Ketika saya menyusun proyek dan membuat toples artifacf, seperti yang ditunjukkan dalam respons di atas, saya menerima kesalahan - "tidak ada manifes attrubute utama ..."
Solusi ini bekerja untuk saya (terima kasih khusus untuk Thilina Ashen Gamage (lihat di atas) untuk tip):
Kutipan - jika Anda menggunakan perpustakaan eksternal dan membangun proyek melalui Pengaturan Proyek - Artefak - Tambah (+) - Jar - Dari modul dengan dependensi , maka mungkin karena bug program folder META-INF dengan file MANIFEST_MF tidak termasuk toples. Untuk menghindarinya buat file jar KOSONG .
Pengaturan Proyek - Artefak - Tambahkan (+) - Jar - JAR KOSONG . Folder META-INF akan ditambahkan ke folder sumber daya . Kemudian pilih kelas utama Anda. Anda akan melihat struktur tabung berikut: Catat keberadaan folder META-INF Kemudian Anda dapat membangun proyek Anda dan membangun artefak. Solusi ini juga berfungsi untuk aplikasi javaFX.
sumber
Jika Anda sedang mengerjakan proyek spring / mvn, Anda dapat menggunakan perintah ini:
File jar akan disimpan pada directoy target.
sumber
Semut dan Maven banyak digunakan. Saya lebih suka Ant, saya merasa lebih ringan dan Anda pengembang lebih memegang kendali. Beberapa akan menyarankan itu downside :-)
sumber