Converti il ​​progetto Eclipse esistente in progetto Maven


246

Per un progetto al lavoro, stiamo valutando l'utilizzo del plug-in Maven per Eclipse per automatizzare le nostre build. In questo momento la procedura è molto più complicata di quanto dovrebbe essere e speriamo che Maven semplifichi le cose con una build con un clic.

La mia domanda è: esiste un mago o un importatore automatico per convertire un progetto Java Eclipse esistente in un progetto Maven, usando il plugin Maven? O dovrei creare un nuovo progetto Maven e copiarlo manualmente su tutti i file sorgente, librerie, ecc.


3
La tua build esistente utilizza uno script Ant?
matt b

4
Probabilmente dovresti cambiare risposta accettata
Mr_and_Mrs_D,

Risposte:


141

Se vuoi solo creare un POM predefinito e abilitare le funzionalità di m2eclipse: quindi suppongo che al momento non hai una configurazione di build automatizzata alternativa che stai provando a importare, e presumo che stai parlando del plug-in m2eclipse.

Il plug-in m2eclipse fornisce un'opzione di scelta rapida su un progetto per aggiungere questo pom.xml predefinito:

Versioni M2E più recenti

Fare clic con il tasto destro su Progetto -> sottomenu Configura -> Converti in progetto Maven

Versioni precedenti di M2E

Fare clic con il tasto destro su Progetto -> sottomenu Maven -> Abilita gestione dipendenze.

Ciò farà il necessario per abilitare il plugin per quel progetto.


Per rispondere " esiste un importatore automatico o un mago? ': non che io sappia. L'uso dell'opzione sopra ti permetterà di abilitare il plugin m2eclipse per il tuo progetto esistente evitando la copia manuale. Sarà comunque necessario impostare effettivamente le dipendenze e altre cose necessarie per costruirsi.


Sebbene abiliti M2Eclipse, non è in realtà una procedura guidata, ma non importa un progetto Eclipse esistente. Piuttosto, offre all'utente la possibilità di selezionare dipendenze, ecc., Che può essere difficile se l'utente non ha molta esperienza con Maven.
Kaleb Pederson,

Ho interpretato la domanda come "devo creare un nuovo progetto e copiare manualmente le cose per usare il plugin m2eclipse?", Chiarirò.
Brabster

16
La voce di menu Maven non è disponibile per me dal menu di scelta rapida (ultimo m2eclipse), la risposta di chengdong funziona.
wulfgarpro,

8
Nella versione corrente di Eclipse (4.2) e m2eclipse la voce di menu è Converti / Converti in progetto Maven.
Jesper,

12
La voce di menu @Jesper è "Configura / Converti in progetto Maven"
angelcervera,

293

Inizia da m2e 0.13.0 (se non prima di), puoi convertire un progetto Java in progetto Maven dal menu contestuale. Ecco come:

  • Fare clic con il tasto destro del mouse sul progetto Java per visualizzare il menu di scelta rapida
  • Seleziona Configura> Converti in progetto Maven

Ecco i passaggi dettagliati con schermate.


30
Questo non crea ancora le strutture di directory e aggiunge dipendenze in pom.
Klaus Nji,

2
m2e non crea ancora la struttura della directory maven e aggiunge dipendenze in pom?
Mr_and_Mrs_D,

2
La mia soluzione (@ShriKant Vashishtha) menzionata di seguito risolve tutti i problemi descritti qui. Crea la struttura di Maven, rimuove gli spazi nei nomi delle cartelle, crea pom.xml e sposta le cartelle di origine nella struttura di Maven
ShriKant Vashishtha,

Funziona perfettamente e perfettamente su Windows 10 Eclipse Mars al momento.
Matthis Kohli,

Funziona perfettamente per me
WitnessTruth

12

Avevo lo stesso problema e volevo creare l'intero spazio di lavoro eclissi contenente circa 60 progetti Eclipse. Farlo manualmente richiedeva molto tempo e le opzioni alternative non erano così praticabili. Per risolvere il problema ho finalmente creato un progetto chiamato eclipse-to-maven su github. Poiché eclipse non ha tutte le informazioni necessarie sulle dipendenze, effettua le seguenti operazioni:

  • Basato su <classpathentry/>elementi XML nel file .classpath, crea le dipendenze da un altro progetto, identifica il file jar della libreria e in base al suo nome (ad esempio jakarta-oro-2.0.8.jar) identifica la sua versione. Attualmente artifactIde groupIdsono gli stessi che non sono riuscito a trovare qualcosa che potrebbe restituirmi il gruppo Maven sulla base della dipendenza artifactId. Sebbene questa non sia una soluzione perfetta, fornisce una buona base per accelerare la Mavenisation.

  • Sposta tutte le cartelle di origine secondo la convenzione di Maven (come src/main/java)

  • Poiché i progetti Eclipse che hanno nomi con spazi sono difficili da gestire in ambiente Linux / Unix, li rinomina anche con nomi senza spazi.

  • I file pom.xml risultanti contengono le dipendenze e la struttura pom di base. Devi aggiungere manualmente i plugin Maven richiesti.


Interessante ! È portato su Luna? Il progetto sarebbe ancora un progetto eclissi (valido .classpathe .projectfile)? Potresti aggiungere alla tua risposta come utilizzare il plug-in per realizzare un semplice progetto JavaSE e quali sarebbero le effettive modifiche nella struttura delle directory?
Mr_and_Mrs_D,

Scusa ma non so cos'è Luna. Non sarà più valido il progetto eclipse poiché la struttura della directory di progetto viene modificata. Tuttavia, creare configurazioni di eclissi modificate utilizzando Maven è facile. Questo non è un plugin ma uno strumento. Come eseguirlo è già menzionato nel README del progetto. La struttura delle directory viene convertita nella convenzione di Maven. Quindi tutte le fonti vanno ad esempio a src / main / java.
ShriKant Vashishtha,

Luna è l'ultima versione di eclipse !!
Mr_and_Mrs_D,

7

Fare clic con il tasto destro sul nome del progetto> Configura> Converti in progetto Maven> fare clic su Fine. Qui aggiungerai alcune dipendenze per scaricare e aggiungere il tuo file jar previsto.

Questo creerà un file pom.xml generato automaticamente. Apri quel file in formato xml nel tuo editor eclipse. Dopo il tag build ( </build>) aggiungi le tue dipendenze che puoi copiare dal sito Web di Maven e aggiungile lì. Ora sei a posto. Queste dipendenze aggiungeranno automaticamente i file jar richiesti.


1
Questo creerà la struttura delle cartelle Maven?
Mr_and_Mrs_D,

Sì, creerà la struttura della cartella Maven in base al modello di archetipo mappato appropriato e alla configurazione minima. Devi aggiungere ciascuna delle dipendenze del tuo progetto (da .classpath) in POM.xml manualmente una alla volta.
Pratap Singh,

5

La risposta di Chengdong è corretta, dovresti usare Configure>Convert to Maven Project. Tuttavia, devo aggiungere che il processo di conversione è stato notevolmente migliorato poiché m2e 0.13.0: m2e 1.1+ e m2e-wtp 0.16.0+ possono ora convertire le impostazioni di eclissi esistenti nella configurazione del plugin maven .

Per quanto riguarda la questione della conversione delle dipendenze, puoi provare la funzione di integrazione Maven di JBoss Tools (JBT) 4.0, che contiene una procedura guidata di conversione sperimentale, collegata al processo di conversione di m2e: http://docs.jboss.org/tools/whatsnew/maven/ maven-news-4.0.0.Beta1.html .

Non pretende di essere la soluzione definitiva (niente può), dovrebbe essere di grande aiuto per l'avvio del processo di conversione di Maven.

Inoltre, ecco alcune idee per migliorare il processo di conversione di m2e , il refactoring per utilizzare un layout Maven molto probabilmente sarà implementato in futuro.

JBT 4.0 (richiede Eclipse JavaEE Juno) può essere installato da http://download.jboss.org/jbosstools/updates/stable/juno/ o dal Marketplace di Eclipse


4

È necessario perché, più o meno, quando importiamo un progetto da Git, non è un progetto maven, quindi le dipendenze maven non sono nel percorso di compilazione.

Ecco cosa ho fatto per trasformare un progetto generale in un progetto maven.

progetto generale -> progetto java fare clic con il tasto destro del mouse sul progetto, proprietà-> sfaccettature del progetto, fare clic su "java". Questo passaggio trasformerà un progetto generale in un progetto Java.

progetto java -> progetto maven tasto destro del mouse progetto, configura -> converti in progetto maven In questo momento, le dipendenze di maven lib non sono ancora nel percorso di compilazione. proprietà del progetto, percorso di costruzione , aggiungi libreria, aggiungi lib dipendenze maven

E attendi qualche secondo, quando vengono caricate le dipendenze, il progetto è pronto!


2

Esiste un programma da riga di comando per convertire qualsiasi progetto Java in un progetto SBT / Maven.

Risolve tutti i barattoli e cerca di capire la versione corretta in base al checksum, al percorso di classe o al nome file SHA. Quindi tenta di compilare i sorgenti fino a quando non trova una configurazione funzionante. È inoltre possibile assegnare attività personalizzate da eseguire per la configurazione delle dipendenze.

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


Questa sembra un'opzione molto interessante. Tuttavia, poiché è attualmente impacchettato, non è molto accessibile. Non è chiaro come impacchettare e distribuire source.code. La maggior parte degli sviluppatori Java non sono sviluppatori Scala, né SBT è uno strumento ampiamente utilizzato all'interno della comunità.
A. Rick,

1

La mia domanda è: esiste un mago o un importatore automatico per convertire un progetto Java Eclipse esistente in un progetto Maven, usando il plugin Maven?

Per quanto ne so, non c'è nulla che possa convertire automagicamente un progetto Eclipse in un progetto Maven (ovvero modificare il layout, creare un POM, "generare" e alimentarlo con metadati, rilevare le librerie e le loro versioni per aggiungerli al POM , eccetera). Eclipse non ha metadati sufficienti per renderlo possibile (questo è esattamente il punto del POM) e / o per produrre un risultato decente.

O dovrei creare un nuovo progetto Maven e copiarlo manualmente su tutti i file sorgente, librerie, ecc

Sarebbe l'opzione migliore secondo me. Crea un progetto Maven, copia / sposta fonti, risorse, test, risorse di test nelle rispettive directory, dichiara dipendenze, ecc.


Perché questa risposta è superiore alla risposta +199? Quasi non l'ho visto
Evorlor

1

Per la conversione in Gradle è analogo a Maven:

Fare clic con il tasto destro su Progetto -> sottomenu Configura -> Converti in progetto Gradle (STS)


4
La risposta non è pertinente alla domanda
Ripon Al Wasim,

1
Ho trovato questa domanda cercando Gradle, molte volte è utile aggiungere risposte per altri sistemi operativi piuttosto che per il sistema operativo richiesto perché non esiste una domanda per singoli casi. Per quanto riguarda Gradle, non vorrei creare una nuova domanda per rispondere a ciò che ritengo utile, piuttosto inserisco questo. Grazie e saluti.
un altro
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.