Domanda

In questo momento, ho due progetti Eclipse: entrambi usano Maven 2 per tutta la loro bontà di dipendenza dal vaso.

All'interno di Eclipse, ho incluso il progetto Foo nel percorso di costruzione della barra del progetto, in modo da poter utilizzare le classi di Foo dalla barra del progetto. Funziona davvero bene in Eclipse, ma quando provo:

mvn compile 

nella directory di Bar, fallisce perché Maven non è a conoscenza della relazione progetto-progetto nel percorso di costruzione di Eclipse.

Se stessi usando Ant, lo userei solo per fare qualcosa di stupido come copiare foo.jar nel percorso di classe del progetto Bar, ma per quanto ne so, le cose sono fatte in modo molto meno accanito nella terra di Maven.

Mi chiedo se esiste una soluzione standard per questo tipo di problema: sembra che sarebbe abbastanza comune e mi manca solo qualcosa di base su come funziona Maven.

È stato utile?

Soluzione

Forse stai facendo riferimento all'altro progetto tramite Eclipse configure- > costruire solo il percorso. Funziona finché utilizzi Eclipse per creare il tuo progetto.

Prova a eseguire prima mvn install nella barra del progetto (per mettere Bar nel tuo repository Maven), quindi aggiungi la dipendenza al pom.xml di Foo.

Dovrebbe funzionare !.

Altri suggerimenti

Dai un'occhiata al plug-in m2eclipse . Aggiornerà automaticamente e dinamicamente il percorso di compilazione del progetto quando cambi il pom. Non è necessario eseguire mvn eclipse: eclipse .

Il plugin rileverà anche se c'è qualche dipendenza nello stesso spazio di lavoro e aggiungerà quel progetto al percorso di compilazione.

Idealmente, se usi m2eclipse, non cambieresti mai manualmente il percorso di compilazione del progetto. Dovresti sempre modificare pom.xml, che è il modo corretto di farlo.

Come è stato precedentemente affermato, Maven non sarà a conoscenza del percorso di compilazione del progetto Eclipse. Devi aggiungere tutte le dipendenze a pom e devi assicurarti che tutte le dipendenze siano costruite e installate prima eseguendo mvn install .

Se vuoi costruire entrambi i progetti con un solo comando, potresti trovare aggregazione del progetto interessante.

Potresti voler provare un approccio alternativo, in cui hai un progetto genitore maven e un progetto a due figli. diciamo:

Parent (pom.xml ha riferimenti a entrambi i progetti / moduli figlio)  - > A (dipende da B)  - > B

quindi quando esegui mvn eclipse: eclipse dalla radice di Parent, maven genererà progetti di eclissi per A e B e avrà B come progetto richiesto nel percorso di classe di A.

Puoi eseguire mvn install dalla radice di Parent per far compilare entrambi i progetti.

Per completare la configurazione, dovrai importare sia A che B in Eclipse, assicurandoti di non selezionare " Copia progetti nell'area di lavoro " ;.

Avevo solo bisogno di farlo e ne avevo bisogno per compilare con il comando mvn clean install esterno. Ecco il modo corretto di configurarlo in Eclipse. (Con il progetto B come dipendenza di A)

  1. Apri il pom.xml per il progetto A in Eclipse.
  2. Vai alla scheda Dipendenze .
  3. Fai clic sul pulsante Aggiungi ... al centro della pagina (per la casella Dipendenze sul lato sinistro)
  4. Nel popup, ci dovrebbe essere una casella sotto una riga con il testo sopra di essa che dice Inserisci groupId, artefactId o sha1 prefisso o pattern (*): . Immettere l'ID artefatto per il progetto B in questa casella.
  5. Fare doppio clic sul vaso che si desidera aggiungere come dipendenza a questo progetto
    1. Potrebbe essere necessario aggiornare il progetto dopo.
    2. Fare clic con il tasto destro del mouse sul progetto A in Esplora pacchetti
    3. Maven - > Aggiorna progetto ...
    4. Quindi premi OK nel popup.

Penso che il modo migliore per gestirlo sia rendere Bar un progetto Maven come Foo, quindi mvn install in modo che sia disponibile nel tuo repository Maven locale. Lo svantaggio è che devi installare quel progetto ogni volta che vuoi che Maven veda le modifiche che apporti a Bar.

Non una risposta completa:
Il pom di Bar deve includere Foo per poter usare Maven per compilarlo.
Sono interessato anche a questa domanda, ma dal punto di vista di come ottenere l'eclissi per riconoscere una dipendenza aggiunta maven è in realtà un altro progetto nello stesso spazio di lavoro. Al momento modifico il percorso di compilazione dopo aver eseguito mvn eclipse: eclipse

Se fai riferimento a un progetto locale, ma la sua versione è stata aggiornata (di solito aumentata), potrebbe essere trovata solo nel tuo repository locale e devi aggiornarne la versione (probabilmente corretta) nei tuoi POM .


Abbiamo un "progetto comune" (usato ovunque) che non ha necessariamente bisogno di essere aggiornato poiché lo etichettiamo tramite il controllo del codice sorgente. quindi

  • mantenendolo in una versione fissa o
  • riferendolo alla speciale ULTIMA versione

sono buone soluzioni alternative per essere sempre al sicuro.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top