2010-03-15 33 views
220

Per un progetto al lavoro, stiamo prendendo in considerazione 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.Converti progetto Eclipse esistente in progetto Maven

La mia domanda è, c'è una procedura guidata 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 copiare manualmente su tutti i file sorgente, librerie, ecc.

+3

Il vostro uso esistente costruire uno script Ant? –

+4

Probabilmente dovresti cambiare risposta risposta –

risposta

120

Se si desidera creare un POM predefinito e abilitare le funzioni m2eclipse: quindi presumo che al momento non si disponga di configurazione di build automatica alternativa che stai cercando di importare, e presumo che tu stia parlando del plug-in m2eclipse.

Il plugin m2eclipse fornisce un clic destro opzione su un progetto per aggiungere questo pom.xml predefinito:

recenti versioni M2E

Fare clic destro su Project -> sottomenu Configura -> Converti in Maven le versioni del progetto

più vecchio M2E

clic destro su project -> sottomenu Maven -> Abilita Dipendenza Gestisci ment.

Quello farà il necessario per abilitare il plugin per quel progetto.


Per rispondere 'c'è un importatore automatica o mago? ': non che io sappia. L'utilizzo dell'opzione precedente ti consentirà di abilitare il plug-in m2eclipse per il tuo progetto esistente evitando la copia manuale. Avrai comunque bisogno di configurare effettivamente le dipendenze e altre cose che ti servono per costruirti.

+0

Sebbene abiliti M2Eclipse, non è propriamente una procedura guidata, 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. –

+0

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

+0

Sì, stavo cercando in particolare il plug-in m2eclipse - è quello suggerito sul sito Web Maven, e sembra che sia supportato in modo decente. –

1

La mia domanda è, esiste una procedura guidata o un importatore automatico per convertire un progetto Java Eclipse esistente in un progetto Maven, utilizzando il plug-in Maven?

Per quanto ne so, non c'è nulla che automagicamente convertire un progetto Eclipse in un progetto Maven (cioè modificare il layout, creare un POM, "generare" e alimentarlo con i metadati, individuare le biblioteche e le loro versioni per aggiungerli al POM, ecc.). Eclipse non ha abbastanza metadata per renderlo possibile (questo è esattamente il punto del POM) e/o per produrre un risultato decente.

o devo creare un nuovo progetto Maven e manualmente copiare tutti i file sorgente, librerie, ecc

Che sarebbe l'opzione migliore a mio parere. Creare un progetto Maven, fonti di copia/rinomina, le risorse, i test, le risorse di test nelle rispettive directory, dichiarano dipendenze, ecc

+0

Ancora vero ora? –

+0

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

281

Start dal M2E 0.13.0 (se non prima di), è possibile convertire un Java progetto su progetto Maven dal menu di scelta rapida.Ecco come:

  • fare clic destro del mouse sul progetto Java per far apparire il menu contestuale
  • Selezionare Configura> Converti in Maven Progetto

Ecco la detailed steps con schermate.

+27

Questo ancora non crea le strutture di directory e aggiunge dipendenze in pom. –

+2

funzionerà anche con i progetti Android in eclissi? – Quasaur

+1

m2e non crea ancora la struttura di directory maven e aggiunge dipendenze in pom? –

10

Avevo lo stesso problema e desideravo Mavenise l'intero spazio di lavoro di Eclipse contenente circa 60 progetti Eclipse. Farlo manualmente richiedeva molto tempo e le opzioni alternative non erano valide. Per risolvere il problema, alla fine ho creato un progetto chiamato eclipse-to-maven su github. Come eclisse non ha tutte le informazioni necessarie circa le dipendenze, lo fa il seguente:

  • Sulla base <classpathentry/> elementi XML nel .classpath file, esso crea le dipendenze su un altro progetto, identifica il file jar biblioteca e Based sul suo nome (ad esempio jakarta-oro-2.0.8.jar) identifica la sua versione. Attualmente artifactId e groupId sono gli stessi che non sono riuscito a trovare qualcosa che potrebbe restituirmi il gruppo MavenId della dipendenza basata su artifactId. Sebbene questa non sia una soluzione perfetta, fornisce un buon terreno per accelerare la Mavenisation.

  • Si muove tutte le cartelle di origine in base al Maven convenzione (come src/main/java)

  • Come progetti Eclipse avere nomi con gli spazi sono difficili da trattare in ambiente Linux/Unix, li rinomina anche con nomi senza spazi.

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

+0

Interessante!È portato su Luna? Il progetto sarebbe ancora un progetto di eclissi (file '.classpath' e' .project' validi)? Potresti aggiungere alla tua risposta come usare il tuo plugin per mavenize un semplice progetto JavaSE - e quali sarebbero i cambiamenti effettivi nella struttura delle directory? –

+0

Scusa ma non so cosa sia Luna. Non sarà più valido il progetto eclipse quando la struttura della directory del progetto viene modificata. Tuttavia la creazione di configurazioni di eclissi modificate usando Maven è facile. Questo non è un plugin ma uno strumento. Come eseguirlo è già menzionato nel README del progetto. La struttura della directory viene convertita nella convenzione di Maven. Quindi tutte le fonti vanno su src/main/java per esempio. –

+0

Luna è l'ultima versione di Eclipse !! –

4

La risposta di Chengdong è corretta, è necessario utilizzare Configure>Convert to Maven Project. Tuttavia, devo aggiungere che il processo di conversione è stato notevolmente migliorato dal momento che m2e 0.13.0: m2e 1.1+ e m2e-wtp 0.16.0+ possono ora convert the existing eclipse settings into maven plugin configuration.

Per quanto riguarda la questione della conversione delle dipendenze, è possibile provare la funzione di integrazione Maven di JBoss Tools (JBT) 4.0, che contiene una procedura guidata di conversione sperimentale, inserita nel 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 (nulla può), dovrebbe essere di grande aiuto per avviare il processo di conversione di Maven.

Inoltre, FYI, qui sono some ideas to enhance m2e's conversion process, il refactoring per utilizzare un layout Maven sarà probabilmente implementato in futuro.

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

7

clic destro sul nome del progetto> Configura> Converti in Maven Progetto> 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 nell'editor di Eclipse. Dopo il tag build (</build>) aggiungi le tue dipendenze che puoi copiare dal sito Web di maven e aggiungerle lì. Ora sei a posto. Queste dipendenze aggiungeranno automaticamente i file jar necessari.

+1

Questo creerà la struttura della cartella di prova? –

+0

@ Mr_and_Mrs_D: No –

4

È necessario perché, più o meno, quando importiamo un progetto da git, non è un progetto di tipo Maven, quindi le dipendenze Maven non si trovano nel percorso di generazione.

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 si trovano ancora nel percorso di generazione. proprietà del progetto, percorso di creazione, aggiunta libreria, aggiunta dipendenze maven lib

E attendere qualche secondo, quando le dipendenze sono caricate, il progetto è pronto!

1

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

Risolve tutti i vasi e cerca di capire la versione corretta in base a checksum SHA, classpath o nomefile. Quindi cerca di compilare i sorgenti finché non trova una configurazione funzionante. Possono essere fornite anche le attività personalizzate da eseguire per configurazione di dipendenza.

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

+0

Questa sembra un'opzione molto attraente. Ma, come è attualmente confezionato, non è molto accessibile. Non è chiaro come impacchettare e distribuire source.code. La maggior parte degli sviluppatori Java non sono sviluppatori di Scala, né SBT è uno strumento ampiamente utilizzato all'interno della comunità. –

0

Per la conversione in Gradle è analogica a Maven:

Fare clic destro su Project -> sottomenu Configura -> Converti in Gradle (STS) Progetto

+3

La risposta non è pertinente alla domanda –

+0

Ho trovato questa domanda cercando Gradle, molte volte è utile aggiungere risposte per altri O.S. piuttosto che l'O.S. perché non esiste una domanda per caso individuale. Riguardo a Gradle, non vorrei creare una nuova domanda per rispondere a ciò che considero utile, ma lo pubblico. Grazie e saluti. – another

Problemi correlati