2013-05-27 18 views
5

Sono nuovo di Maven. Mi viene dato un nuovo progetto e questo ha la seguente struttura.maven - due diversi poms radice

Data_Res 
    | 
    ---res-search 
    |  | 
    |  -----res-hast 
    |  |  | 
    |  |  ------src/main.... 
    |  |  | 
    |  |  ------pom.xml 
    |  -----res-haster 
    |  |  | 
    |  |  ------src/main.... 
    |  |  | 
    |  |  ------pom.xml 
    |  | 
    |  ----pom.xml 
    | 
    | 
    ---pom.xml 
    ---sonar_pom.xml 

Non vedo la sezione moduli in root pom.xml. Ma vedo la sezione dei moduli in sonar_pom.xml. Non include tutti i nodi figli. Una cartella/progetto può avere due poms? Oppure possiamo eseguirli separatamente?

  1. Come si interpreta questo? Sottomoduli o singoli progetti? Ci sono metriche da scoprire?
  2. Mi è stato detto di eseguire mvn clean install sul pom pom. L'ho fatto. Mi è stato chiesto di verificare se sono state fornite tutte le dipendenze per una delle sottocartelle. Come controllare questi? Posso vedere alcuni file nella cartella .m2 nella mia home directory.
  3. Come si crea/pacchetto questo? Ho intenzione di lavorare su una delle sottocartelle. Non sicuro se si tratta di un progetto o sottomodulo separato. In tal caso, posso andare direttamente in quella cartella ed eseguire mvn package/build da quella cartella (esiste pom.xml)?

risposta

9

Quando si esegue un gol (e.g mvn install) esperto di controllerà per pom.xml sulla cartella dell'esecuzione se pom.xml presentarlo eseguirà il rinvio quella cartella (cioè progetto) se sono presenti moduli menzionato stesso l'obiettivo verrà eseguito sui moduli, questa operazione è ricorsiva.

Una cartella/progetto può avere due poms?

Sì, è possibile avere più pon per un progetto, ma il valore predefinito è pom.xml se si desidera utilizzare il file pom alternativo è possibile utilizzare -f parlare del file di pom alternativo nel tuo caso mvn -f sonar_pom.xml clean install, file di esaltante che pom è usato per il sonar.

Come si interpreta questo? Sottomoduli o singoli progetti? Ci sono metriche da scoprire?

Ogni progetto ha un pom.xml può essere costruito in modo indipendente se il genitore e tutte le dipendenze sono presenti nel repository locale Maven.

Mi è stato detto di eseguire mvn clean install su root pom. L'ho fatto. Sono stato chiesto di verificare se tutte le dipendenze per una delle sottocartelle sono fornite . Come controllare questi? Posso vedere alcuni file nella cartella .m2 nella directory mia home.

Per verificare controllare la dipendenza vostro esperto di locali pronti contro termine il valore predefinito è ~/.m2/repository, ma le impostazioni possono essere modificate in settings.xml. Controllare ~/.m2/settings.xml se il file non esiste è possibile trovare le impostazioni globali in <maven_home>/conf/settings.xml copiarlo ~/.m2/ allora può essere ignorato controllare il seguente tag <localRepository>/path/to/local/repo</localRepository>

Come faccio a costruire/pacchetto di questo? Ho intenzione di lavorare su una delle sottocartelle . Non sicuro se si tratta di un progetto o sottomodulo separato. Nel caso , posso andare direttamente in quella cartella ed eseguire il pacchetto mvn/ compilato da quella cartella (esiste pom.xml)?

Come ho già detto che si può fare mvn package sul modulo se avete la capogruppo e tutte le dipendenze. È possibile ottenere questi in combinazione di due modi

  1. installare questi nel sistema utilizzando mvn install o
  2. utilizzando remote repositories
+0

Grazie, @Karthikeyan. Aiuta molto. 2 cose. 1.) Non vedo .m2/settings.xml. 2.) Quando eseguo il pacchetto dal sottomodulo/progetto, il suo fallimento sulle dipendenze. E quando lo impacchetta dal sottomodulo, recupera automaticamente tutte le dipendenze da Parent? –

+0

@KevinRave Ho aggiornato la mia risposta su settings.xml. Per la tua seconda domanda, se le dipendenze non sono presenti in [Central Repo] (http://repo1.maven.org/maven/) non verrà scaricato. Verifica quale dipendenza non viene scaricata se non è sviluppata da te, quindi controlla quale repository contiene quell'artefatto e configuralo in settings.xml [Impostazioni Ref] (http://maven.apache.org/settings.html). –

+0

Fantastico! Grazie! Ecco cosa è successo. Stavo eseguendo il pacchetto mvn sulla cartella che mi era stato detto. Mancavano le dipendenze sull'altra cartella. Così sono entrato in quella cartella e ho eseguito l'installazione di mvn, quindi ho chiesto un'altra dipendenza della cartella, sono entrato in quello e ho eseguito l'installazione di mvn e così via come 4 cartelle. Sono entrato in ogni cartella e ho eseguito l'installazione di mvn. Finalmente tornò alla cartella originale ed eseguì l'installazione di mvn. Ha funzionato. Quindi la mia ipotesi è che root pom non sta facendo il lavoro. Qual è la tua opinione su questo? Devo eseguire sonar_pom.xml anziché pom.xml come mi è stato detto? –

0

Giusto per aggiungere alla risposta già corretta: in Eclipse ho dovuto creare un nuova "configurazione di esecuzione" sotto le configurazioni di esecuzione "Maven Build". Ho impostato la directory di base per lo standard

$ {project_loc: collegare}

e il campo "Obiettivi" per

pom_deploy.xml -f install -T 1C

Quindi ho potuto fare clic con il tasto destro del mouse su custom pom_deploy.xml -> Esegui come ... -> Esegui configurazioni -> Custom Maven Deploy

Il '-T 1C' è opzionale e indica a Maven di utilizzare più processori contemporaneamente per il processo di compilazione/compilazione.

Problemi correlati