Mengonversi Proyek Eclipse yang Ada ke Proyek Maven

246

Untuk proyek di tempat kerja, kami mempertimbangkan untuk menggunakan plugin Maven untuk Eclipse untuk mengotomatiskan build kami. Saat ini prosedurnya jauh lebih rumit dari yang seharusnya, dan kami berharap bahwa Maven akan menyederhanakan hal-hal menjadi membangun satu klik.

Pertanyaan saya adalah, apakah ada penyihir atau importir otomatis untuk mengonversi proyek Eclipse Java yang sudah ada menjadi proyek Maven, menggunakan plugin Maven? Atau haruskah saya membuat proyek Maven baru dan secara manual menyalin semua file sumber, lib, dll.

Tom G
sumber
3
Apakah bangunan Anda yang ada menggunakan skrip Semut?
matt b
4
Anda mungkin harus mengganti jawaban yang diterima
Mr_and_Mrs_D

Jawaban:

141

Jika Anda hanya ingin membuat POM default dan mengaktifkan fitur m2eclipse: jadi saya anggap Anda saat ini tidak memiliki setup build otomatis alternatif yang Anda coba impor, dan saya berasumsi Anda sedang berbicara tentang plugin m2eclipse.

Plugin m2eclipse menyediakan opsi klik kanan pada suatu proyek untuk menambahkan pom.xml default ini:

Versi M2E yang lebih baru

Klik kanan pada Project -> submenu Configure -> Convert to Maven Project

Versi M2E yang lebih lama

Klik kanan pada Project -> submenu Maven -> Enable Dependency Management.

Itu akan melakukan yang diperlukan untuk mengaktifkan plugin untuk proyek itu.


Untuk menjawab ' adakah pengimpor atau penyihir otomatis? ': tidak yang saya tahu. Menggunakan opsi di atas akan memungkinkan Anda untuk mengaktifkan plugin m2eclipse untuk proyek Anda yang sudah ada menghindari penyalinan manual. Anda masih harus benar-benar mengatur dependensi dan hal-hal lain yang perlu Anda bangun sendiri.

brabster
sumber
Meskipun memungkinkan M2Eclipse, sebenarnya bukan penyihir yang tidak mengimpor proyek Eclipse yang ada. Sebaliknya, ini memberi pengguna pilihan untuk memilih dependensi, dll., Yang mungkin sulit jika pengguna tidak memiliki banyak pengalaman dengan Maven.
Kaleb Pederson
Saya menafsirkan pertanyaan sebagai 'apakah saya perlu membuat proyek baru dan secara manual menyalin barang-barang untuk menggunakan plugin m2eclipse?', Saya akan mengklarifikasi.
brabster
16
Item menu pakar tidak tersedia bagi saya dari menu klik kanan (m2eclipse terbaru), jawaban chengdong bekerja.
wulfgarpro
8
Pada versi Eclipse (4.2) dan m2eclipse saat ini, item menu adalah Convert / Convert to Maven Project.
Jesper
12
Item menu @Jesper adalah "Konfigurasi / Konversi ke Proyek Maven"
angelcervera
293

Mulai dari m2e 0.13.0 (jika tidak lebih awal dari), Anda dapat mengonversi proyek Java ke proyek Maven dari menu konteks. Begini caranya:

  • Klik kanan proyek Java untuk memunculkan menu konteks
  • Pilih Configure> Convert to Maven Project

Berikut adalah langkah - langkah terperinci dengan tangkapan layar.

chengdong
sumber
30
Ini masih tidak membuat struktur direktori dan menambah dependensi di pom.
Klaus Nji
2
apakah m2e masih belum membuat struktur direktori pakar dan menambahkan dependensi di pom?
Mr_and_Mrs_D
2
Solusi saya (@ShriKant Vashishtha) yang disebutkan di bawah menyelesaikan semua masalah yang dijelaskan di sini. Membuat struktur Maven, menghapus spasi dalam nama folder, membuat pom.xml dan memindahkan folder sumber dalam struktur Maven
ShriKant Vashishtha
Berfungsi sempurna dan sempurna di Windows 10 Eclipse Mars pada saat itu.
Matthis Kohli
Ini
berfungsi
12

Saya mengalami masalah yang sama dan ingin seluruh ruang kerja gerhana Mavenise berisi sekitar 60 proyek Eclipse. Melakukannya secara manual membutuhkan banyak waktu dan opsi alternatif tidak memungkinkan. Untuk mengatasi masalah ini saya akhirnya membuat proyek yang disebut eclipse-to-maven di github. Karena gerhana tidak memiliki semua informasi yang diperlukan tentang dependensi, ia melakukan yang berikut:

  • Berdasarkan <classpathentry/>elemen XML dalam file .classpath, ia menciptakan dependensi pada proyek lain, mengidentifikasi file jar perpustakaan dan berdasarkan namanya (misalnya jakarta-oro-2.0.8.jar) mengidentifikasi versinya. Saat ini artifactIddan groupIdsama seperti saya tidak dapat menemukan sesuatu yang dapat mengembalikan saya ke grup Maven berdasarkan ketergantungan artifactId. Meskipun ini bukan solusi yang sempurna, ini memberikan landasan yang baik untuk mempercepat Mavenisation.

  • Ini memindahkan semua folder sumber sesuai dengan konvensi Maven (seperti src/main/java)

  • Karena proyek Eclipse yang memiliki nama dengan spasi sulit untuk ditangani di lingkungan Linux / Unix, ia mengubah nama mereka juga dengan nama tanpa spasi.

  • File pom.xml yang dihasilkan berisi dependensi dan struktur pom dasar. Anda harus menambahkan plugin Maven yang diperlukan secara manual.

ShriKant Vashishtha
sumber
Menarik! Apakah porting ke Luna? Apakah proyek masih menjadi proyek gerhana (valid .classpathdan .projectfile)? Bisakah Anda menambahkan jawaban Anda bagaimana menggunakan plugin Anda untuk memotong proyek JavaSE sederhana - dan apa perubahan aktual dalam struktur direktori?
Mr_and_Mrs_D
Maaf tapi saya tidak tahu apa itu Luna. Ini tidak akan menjadi proyek gerhana lagi karena struktur direktori proyek berubah. Namun membuat konfigurasi gerhana yang dimodifikasi menggunakan Maven mudah. Ini bukan plugin tetapi alat. Cara menjalankannya sudah disebutkan dalam README proyek. Struktur direktori akan dikonversi dalam konvensi Maven. Jadi semua sumber pergi ke src / main / java misalnya.
ShriKant Vashishtha
Luna adalah versi terbaru dari gerhana !!
Mr_and_Mrs_D
7

Klik kanan pada nama Project> Configure> Convert to Maven Project> klik finish. Di sini Anda akan menambahkan beberapa dependensi untuk mengunduh dan menambahkan file jar yang Anda harapkan.

Ini akan membuat file pom.xml yang dibuat secara otomatis. Buka file itu dalam format xml di editor gerhana Anda. Setelah membangun tag ( </build>) tambahkan dependensi Anda yang dapat Anda salin dari situs web maven dan tambahkan di sana. Sekarang kamu baik untuk pergi. Ketergantungan ini secara otomatis akan menambahkan file jar yang Anda butuhkan.

Omar Faroque Anik
sumber
1
Apakah ini akan membuat struktur folder pakar?
Mr_and_Mrs_D
ya, Ini akan membuat struktur folder maven berdasarkan template pola dasar yang dipetakan dan konfigurasi minimum. Anda harus menambahkan masing-masing dependensi proyek Anda (dari .classpath) ke POM.xml sendiri secara manual satu per satu.
Pratap Singh
5

Jawaban Chengdong benar, Anda harus menggunakan Configure>Convert to Maven Project. Namun, saya harus menambahkan proses konversi telah sangat ditingkatkan sejak m2e 0.13.0: m2e 1.1+ dan m2e-wtp 0.16.0+ sekarang dapat mengubah pengaturan gerhana yang ada menjadi konfigurasi plugin pakar .

Mengenai masalah konversi ketergantungan, Anda dapat mencoba fitur integrasi JBoss Tools (JBT) 4.0 Maven, yang berisi panduan konversi eksperimental, yang dicolokkan ke proses konversi m2e: http://docs.jboss.org/tools/whatsnew/maven/ maven-news-4.0.0.Beta1.html .

Itu tidak berpura-pura menjadi solusi utama (tidak ada yang bisa), baik itu harus sangat membantu bootstrap proses konversi Maven Anda.

Juga, FYI, berikut adalah beberapa ide untuk meningkatkan proses konversi m2e , refactoring untuk menggunakan tata letak Maven kemungkinan besar akan diimplementasikan di masa depan.

JBT 4.0 (memerlukan Eclipse JavaEE Juno) dapat diinstal dari http://download.jboss.org/jbosstools/updates/stable/juno/ atau dari Eclipse Marketplace

Fred Bricon
sumber
4

Itu perlu karena, lebih atau kurang, ketika kita mengimpor proyek dari git, itu bukan proyek pakar, sehingga ketergantungan pakar tidak berada di jalur pembangunan.

Inilah yang telah saya lakukan untuk mengubah proyek umum menjadi proyek pakar.

proyek umum -> proyek java klik kanan proyek, properti-> segi proyek, klik "java". Langkah ini akan mengubah proyek umum menjadi proyek java.

proyek java -> proyek maven proyek klik kanan, konfigurasikan -> konversikan ke proyek maven Pada saat ini, maven dependensi lib masih belum dalam jalur pembangunan. properti proyek, membangun jalur, tambahkan perpustakaan, tambahkan maven dependensi lib

Dan tunggu beberapa detik, ketika dependensi dimuat, proyek siap!

Moonshang
sumber
2

Ada program baris perintah untuk mengubah proyek Java apa pun menjadi proyek SBT / Maven.

Ini menyelesaikan semua botol dan mencoba mencari tahu versi yang benar berdasarkan SHA checksum, classpath atau nama file. Kemudian ia mencoba untuk mengkompilasi sumber sampai menemukan konfigurasi yang berfungsi. Tugas khusus untuk dieksekusi per konfigurasi dependensi juga dapat diberikan.

UniversalResolver 1.0
Usage: UniversalResolver [options]

  -s <srcpath1>,<srcpath2>... | --srcPaths <srcpath1>,<srcpath2>...
        required src paths to include
  -j <jar1>,<jar2>... | --jars <jar1>,<jar2>...
        required jars/jar paths to include
  -t /path/To/Dir | --testDirectory /path/To/Dir
        required directory where test configurations will be stored
  -a <task1>,<task2>... | --sbt-tasks <task1>,<task2>...
        SBT Tasks to be executed. i.e. compile
  -d /path/To/dependencyFile.json | --dependencyFile /path/To/dependencyFile.json
        optional file where the dependency buffer will be stored
  -l | --search
        load and search dependencies from remote repositories
  -g | --generateConfigurations
        generate dependency configurations
  -c <value> | --findByNameCount <value>
        number of dependencies to resolve by class name per jar

https://bitbucket.org/mnyx/universalresolver

Alex
sumber
Ini terlihat seperti opsi yang sangat menarik. Tapi, karena saat ini dikemas, itu tidak terlalu mudah diakses. Tidak jelas bagaimana mengemas dan menggunakan source.code. Sebagian besar pengembang Java bukan pengembang Scala, SBT juga bukan alat yang banyak digunakan dalam komunitas.
A. Rick
1

Pertanyaan saya adalah, apakah ada penyihir atau importir otomatis untuk mengonversi proyek Eclipse Java yang sudah ada menjadi proyek Maven, menggunakan plugin Maven?

Sejauh yang saya tahu, tidak ada yang secara otomatis akan mengubah proyek Eclipse menjadi proyek Maven (yaitu memodifikasi tata letak, membuat POM, "menghasilkan" dan memberi makan dengan metadata, mendeteksi perpustakaan dan versi mereka untuk menambahkannya ke POM , dll). Eclipse tidak memiliki cukup metadata untuk memungkinkan hal ini (inilah tepatnya poin POM) dan / atau untuk menghasilkan hasil yang layak.

Atau haruskah saya membuat proyek Maven baru dan secara manual menyalin semua file sumber, lib, dll

Itu akan menjadi pilihan terbaik menurut saya. Buat proyek Maven, salin / pindahkan sumber, sumber daya, tes, sumber daya uji ke direktori masing-masing, nyatakan dependensi, dll.

Thivent Pascal
sumber
Mengapa jawaban ini lebih tinggi dari jawaban +199? Saya hampir tidak melihat yang itu
Evorlor
1

Untuk mengonversi ke Gradle adalah analog dengan Maven:

Klik kanan pada Project -> submenu Configure -> Convert to Gradle (STS) Project

lain
sumber
4
Jawabannya tidak relevan dengan pertanyaan
Ripon Al Wasim
1
Saya menemukan pertanyaan ini dengan mencari Gradle, berkali-kali ada baiknya menambahkan jawaban untuk OS lain daripada OS yang diminta karena tidak ada pertanyaan untuk masing-masing kasus. Mengenai Gradle, saya tidak akan membuat pertanyaan baru untuk menjawab apa yang saya anggap membantu, tetapi saya memposting ini. Terima kasih & Salam.
lain