Mevcut Tutulma Projesini Maven Projesine Dönüştür


246

İş yerinde bir proje için, binalarımızı otomatikleştirmek için Eclipse için Maven eklentisini kullanmayı düşünüyoruz. Şu anda prosedür olması gerekenden çok daha karmaşık ve Maven'in işleri tek tıklamayla inşa etmeyi basitleştireceğini umuyoruz.

Sorum şu: Maven eklentisini kullanarak mevcut bir Eclipse Java projesini Maven projesine dönüştürmek için bir sihirbaz veya otomatik ithalatçı var mı? Yoksa yeni bir Maven projesi oluşturmalı ve tüm kaynak dosyaları, kütüphaneler vb. Üzerine manuel olarak kopyalamalıyım.


3
Mevcut yapınız bir Ant komut dosyası kullanıyor mu?
matt b

4
Muhtemelen kabul edilen cevabı değiştirmelisiniz
Mr_and_Mrs_D

Yanıtlar:


141

Sadece varsayılan bir POM oluşturmak ve m2eclipse özelliklerini etkinleştirmek istiyorsanız: bu yüzden şu anda içe aktarmaya çalıştığınız alternatif bir otomatik yapı kurulumuna sahip olmadığınızı ve m2eclipse eklentisi hakkında konuştuğunuzu varsayıyorum.

M2eclipse eklentisi, bu varsayılan pom.xml dosyasını eklemek için bir projede sağ tıklama seçeneği sunar:

Daha yeni M2E sürümleri

Project -> alt menüsüne sağ tıklayın Configure -> Maven Project'e Dönüştür

Eski M2E sürümleri

Project -> Maven -> Bağımlılık Yönetimini Etkinleştir alt menüsüne sağ tıklayın.

Bu, proje için eklentiyi etkinleştirmek için gerekli olanı yapacaktır.


Cevap vermek için ' otomatik bir ithalatçı veya sihirbaz var mı? ': bildiğim kadarıyla hayır. Yukarıdaki seçeneği kullanmak, el ile kopyalamadan kaçınarak mevcut projeniz için m2eclipse eklentisini etkinleştirmenizi sağlar. Yine de kendinizi oluşturmak için ihtiyacınız olan bağımlılıkları ve diğer şeyleri ayarlamanız gerekecektir.


M2Eclipse'i etkinleştirmesine rağmen, gerçekten bir sihirbaz değil, mevcut bir Eclipse projesini içe aktarmaz. Daha ziyade, kullanıcı Maven ile çok fazla deneyime sahip değilse zor olabilecek, bağımlılıkları vb. Seçme seçeneği sunar.
Kaleb Pederson

Soruyu 'm2eclipse eklentisini kullanmak için yeni bir proje oluşturmam ve elle kopyalamam gerekiyor mu?' Şeklinde yorumladım.
Brabster

16
Maven menü öğesi sağ tıklama menüsünden (en son m2eclipse) benim için mevcut değil, chengdong'un cevabı çalışıyor.
wulfgarpro

8
Eclipse (4.2) ve m2eclipse'ın geçerli sürümünde menü öğesi Maven Project'e Dönüştür / Dönüştür'dür.
Jesper

12
@Jesper menü öğesi "Maven Projesini Yapılandır / Dönüştür"
angelcervera

293

M2e 0.13.0'dan (daha önce değilse) başlayarak, bir Java projesini bağlam menüsünden Maven projesine dönüştürebilirsiniz. İşte nasıl:

  • Bağlam menüsünü açmak için Java projesine sağ tıklayın
  • Yapılandır> Maven Projesine Dönüştür'ü seçin

İşte ekran görüntüleri ile ayrıntılı adımlar .


30
Bu hala dizin yapılarını oluşturmaz ve pom'a bağımlılıklar ekler.
Klaus Nji

2
m2e hala maven dizin yapısını yaratmıyor ve pom'a bağımlılıklar ekliyor mu?
Mr_and_Mrs_D

2
Aşağıda bahsedilen çözümüm (@ShriKant Vashishtha) burada açıklanan tüm sorunları çözer. Maven yapısı oluşturur, klasör adlarındaki boşlukları kaldırır, pom.xml oluşturur ve Maven yapısında kaynak klasörleri taşır
ShriKant Vashishtha

O zaman Windows 10 Eclipse Mars'ta mükemmel ve kusursuz çalışır.
Matthis Kohli

Benim için mükemmel çalışıyor
WitnessTruth

12

Aynı sorunu yaşıyordum ve yaklaşık 60 Eclipse projesi içeren tüm tutulma çalışma alanını Mavenise etmek istedim. Bunu manuel olarak yapmak çok zaman gerektiriyordu ve alternatif seçenekler bu kadar uygun değildi. Sorunu çözmek için sonunda github'da eclipse-to-maven adlı bir proje oluşturdum . Tutulma bağımlılıklar hakkında gerekli tüm bilgilere sahip olmadığından, aşağıdakileri yapar:

  • <classpathentry/>.Classpath dosyasındaki XML öğelerine dayanarak, başka bir projeye bağımlılıklar oluşturur, kütüphane jar dosyasını ve adını temel alarak (örneğin jakarta-oro-2.0.8.jar) sürümünü tanımlar. Şu andaartifactId ve groupIdbana bağlı bağımlılık Maven groupId dönecek bir şey bulamadık aynı artifactId. Bu mükemmel bir çözüm olmasa da Mavenisation'ı hızlandırmak için iyi bir zemin sağlıyor.

  • Tüm kaynak klasörleri Maven kuralına göre taşır ( src/main/java )

  • Uzaylı isimleri olan Eclipse projelerinin Linux / Unix ortamında başa çıkması zor olduğundan, bu isimleri boşluksuz isimlerle de yeniden adlandırır.

  • Sonuçta ortaya çıkan pom.xml dosyaları bağımlılıkları ve temel pom yapısını içerir. Gerekli Maven eklentilerini manuel olarak eklemeniz gerekir.


İlginç ! Luna'ya taşınmış mı? Proje hala bir tutulma projesi olur mu (geçerli .classpathve .projectdosyalar)? Cevabınızı basit bir JavaSE projesini mavenize etmek için nasıl kullanacağınızı ekleyebilir misiniz - dizin yapısındaki gerçek değişiklikler neler olurdu?
Mr_and_Mrs_D

Üzgünüm ama Luna'nın ne olduğunu bilmiyorum. Proje dizini yapısı değiştiği için artık geçerli tutulma projesi olmayacak. Ancak Maven kullanarak değiştirilmiş tutulma yapılandırmaları oluşturmak kolaydır. Bu bir eklenti değil bir araçtır. Nasıl çalıştırılacağı zaten projenin README'sinde belirtilmiştir. Dizin yapısı Maven sözleşmesinde dönüştürülür. Böylece tüm kaynaklar örneğin src / main / java adresine gider.
ShriKant Vashishtha

Luna tutulmanın son sürümüdür !!
Mr_and_Mrs_D

7

Proje adı> Yapılandır> Maven Projesine Dönüştür> öğesini sağ tıklayın. Burada, beklenen jar dosyanızı indirmek ve eklemek için bazı bağımlılıklar ekleyeceksiniz.

Bu otomatik olarak oluşturulan bir pom.xml dosyası oluşturur. Bu dosyayı tutulma düzenleyicinizde xml formatında açın. Derleme tag ( </build>) sonra maven web sitesinden kopyalayabilirsiniz bağımlılıklarınızı ekleyin ve orada ekleyin. Şimdi gitmekte fayda var. Bu bağımlılıklar gerekli jar dosyalarınızı otomatik olarak ekler.


1
Bu maven klasör yapısını oluşturacak mı?
Mr_and_Mrs_D

evet, maven klasör yapısını uygun eşlenmiş arketip şablonuna ve minimum yapılandırmaya göre oluşturur. Proje bağımlılıklarınızın her birini (.classpath'ten) POM.xml dosyasına teker teker manuel olarak eklemeniz gerekir.
Pratap Singh

5

Chengdong'un cevabı doğru, kullanmalısınız Configure>Convert to Maven Project. Ancak, dönüştürme işlemi büyük ölçüde geliştirildi eklemeliyim çünkü m2e 0.13.0: m2e 1.1+ ve m2e-wtp 0.16.0+ artık mevcut tutulma ayarlarını maven eklenti yapılandırmasına dönüştürebilir .

Bağımlılık dönüştürme konusuna gelince, m2e'nin dönüşüm sürecine takılı deneysel bir dönüştürme sihirbazı içeren JBoss Tools (JBT) 4.0 Maven entegrasyon özelliğini deneyebilirsiniz: http://docs.jboss.org/tools/whatsnew/maven/ maven-news-4.0.0.Beta1.html .

Maven dönüşüm sürecinizi büyük ölçüde önyüklemenize yardımcı olmalı, nihai çözüm (hiçbir şey olamaz) gibi davranmaz.

Ayrıca, FYI, m2e'nin dönüşüm sürecini geliştirmek için bazı fikirler , bir Maven düzeni kullanmak için yeniden düzenleme büyük olasılıkla gelecekte uygulanacaktır.

JBT 4.0 (Eclipse JavaEE Juno gerektirir) http://download.jboss.org/jbosstools/updates/stable/juno/ adresinden veya Eclipse Marketplace'ten yüklenebilir


4

Gerekli, çünkü az ya da çok, bir projeyi git'ten içe aktardığımızda, bu bir maven projesi değil, bu yüzden maven bağımlılıkları oluşturma yolunda değil.

Genel bir projeyi bir maven projesine dönüştürmek için yaptım.

genel proje -> java projesi projeye sağ tıklayın, özellikleri-> proje yönleri, "java" tıklayın. Bu adım genel bir projeyi java projesine dönüştürecektir.

java projesi -> maven projesi sağ tıklama projesi, yapılandırmak -> maven projesine dönüştürmek Şu anda, maven bağımlılıkları lib hala inşa yolunda değil. proje özellikleri, yol oluşturma library kitaplık ekleme, maven bağımlılıkları ekleme lib

Ve birkaç saniye bekleyin, bağımlılıklar yüklendiğinde proje hazır!


2

Herhangi bir Java projesini bir SBT / Maven projesine dönüştürmek için bir komut satırı programı vardır.

Tüm kavanozları çözer ve SHA sağlama toplamı, sınıf yolu veya dosya adına göre doğru sürümü bulmaya çalışır. Sonra çalışan bir yapılandırma bulana kadar kaynakları derlemeye çalışır. Her bağımlılık yapılandırmasında yürütülecek özel görevler de verilebilir.

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


Bu çok çekici bir seçenek gibi görünüyor. Ancak, şu anda paketlendiği için çok erişilebilir değildir. Source.code'un nasıl paketleneceği ve dağıtılacağı belli değildir. Çoğu Java geliştiricisi Scala geliştiricisi değildir ve SBT topluluk içinde yaygın olarak kullanılan bir araçtır.
A. Rick

1

Sorum şu: Maven eklentisini kullanarak mevcut bir Eclipse Java projesini Maven projesine dönüştürmek için bir sihirbaz veya otomatik ithalatçı var mı?

Bildiğim kadarıyla, bir Eclipse projesini otomatik olarak bir Maven projesine dönüştürecek hiçbir şey yoktur (yani, düzeni değiştirir, bir POM oluşturur, "oluşturur" ve meta verilerle besler, kütüphaneleri ve sürümlerini POM'a eklemek için algılar , vb). Eclipse'in bunu mümkün kılmak için yeterli meta verisi yok (tam olarak POM'un noktası bu) ve / veya iyi bir sonuç üretmek için.

Yoksa yeni bir Maven projesi oluşturmalı ve tüm kaynak dosyaları, kütüphaneler vb. Üzerine manuel olarak kopyalamalıyım.

Bu benim görüşüme göre en iyi seçenek olurdu. Bir Maven projesi oluşturun, kaynakları, kaynakları, testleri, test kaynaklarını ilgili dizinlerine kopyalayın / taşıyın, bağımlılıkları beyan edin vb.


Bu cevap neden +199 yanıtından daha yüksek? Neredeyse bunu görmedim
Evorlor

1

Gradle'a dönüştürmek için Maven'e analog:

Project -> alt menüsüne sağ tıklayın Configure -> Gradle (STS) Projesine Dönüştür


4
Cevap şu soru ile ilgili değildir
Ripon Al Wasim

1
Gradle'ı arayarak bu soruyu buldum, birçok kez, sorulan işletim sistemi yerine diğer işletim sistemlerine cevap eklemek yararlıdır çünkü bireysel durum için bir soru yoktur. Gradle ile ilgili olarak, yararlı olduğunu düşündüğüm sorulara cevap vermek için yeni bir soru oluşturmazdım, bunu gönderirim. Teşekkürler & Saygılar.
başka bir
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.