2012-06-25 10 views
6

Come consulente, ho più client che sto facendo un lavoro per. Ogni client utilizza il proprio repository Maven interno, anch'esso configurato per il mirroring di Central e altri repository esterni. Devo configurare la mia installazione di Maven sul mio laptop in modo che quando lavoro per un client, utilizzi il loro repository interno per tutto.specchi multipli Maven per gli stessi repository

avevo pensato che sarei in grado di utilizzare i profili per gestire questo, ma le impostazioni specchio non può essere modificato per-profilo.

Qualcuno ha suggerimenti su come affrontare questa configurazione Maven?

Nota: una domanda simile è qui: How do I configure maven to access maven central if nexus server is down?, ma quella domanda riguarda il passaggio tra Centrale proveniente da uno specchio o meno. Che cosa ho bisogno è per il centrale (e non solo) di venire da uno specchio o una diversa base di alcune proprietà/impostazione/variabile ecc

+2

Ho finalmente trovato un'altra domanda che mi ha dato abbastanza informazioni per rispondere alla mia stessa domanda. Riferimento: [link] (http://stackoverflow.com/a/1385744/1481288) Quindi, quello che ho fatto è impostare la mia definizione di mirror utilizzando $ {M2_MIRROR} nell'URL, e quindi posso impostare una variabile di ambiente che punta al repository interno corretto a seconda del client (o progetto interno) per cui lavoro. – MBru

+0

+1 domanda molto molto interessante! Sono nello stesso caso, e mi chiedevo come affrontare un problema del genere ... +1 –

risposta

0

Ho un requisito molto simile nel mio progetto troppo. Ho creato due settings.xml file separati, li nominato come settings_one.xml e settings_two.xml e salvato nella MAVEN_HOME. A seconda del file che mi serve, ho un piccolo script (un file bat su Windows) che sovrascrive il file settings.xml esistente con uno dei due file di impostazioni.

del C:\Users\<username>\.m2\settings.xml 
copy C:\Users\<username>\.m2\settings_one.xml C:\Users\tadigotl\.m2\settings.xml 
+1

Non volevo dover gestire più file di impostazioni. Penso di aver trovato una soluzione che funzionerà per me. L'indizio era in un'altra domanda che non ho trovato quando cercavo in origine questo. Vedi il mio commento nell'OP – MBru

+0

Totalmente convinto :) – thk

0

La soluzione più semplice che posso suggerire è quello di installare git e impegnarsi si .m2/settings.xml (ovviamente ignorare il repository stesso tramite .gitignore) in git e fare rami appropriate per i clienti. Cambiare le impostazioni sarà fatto da:

git checkout CUSTOMER_BRANCH 

e inoltre ogni variazione è tracciata da un SCM.

2

Creare due alias: ha

alias build_at_home="mvn -s $HOME/.m2/home_settings.xml" 
alias build_at_work="mvn -s $HOME/.m2/work_settings.xml" 

L'opzione "-s" è utile per affermando esplicitamente quale file impostazioni di ambiente da utilizzare. Utilizziamo questo meccanismo sul nostro server di build condiviso per garantire che ogni build del progetto sia isolata.

Ovviamente su Windows è possibile creare un insieme di file batch.

+0

Questo sembra un buon miglioramento della soluzione di scambio dei file di impostazioni. Finora, tuttavia, penso che la soluzione di variabile d'ambiente sia la migliore, in cui il valore è utilizzato nelle impostazioni del mirror del mio singolo settings.xml. – MBru