quando sto facendo lo sviluppo ho spesso bisogno di cambiare una dipendenza, ma non sono pronto a distribuire le mie modifiche. Ad esempio, sto lavorando al progetto Foo e mi rendo conto che devo aggiungere un metodo alla libreria comune. Prima di distribuire questa modifica nel nostro repository interno, vorrei installare le modifiche alla libreria comune (mvn install
) e ricompilare Foo per utilizzare la libreria comune nel repository locale (nota che sto utilizzando tutte le versioni di SNAPSHOT).Perché Maven usa il mio repository interno prima del mio repository locale?
Tuttavia, dopo I mvn install
la mia libreria comune, quando ricompongo Foo non utilizza la nuova libreria comune - continua a utilizzare l'ultimo SNAPSHOT della libreria comune nel repository interno. Se distribuisco la libreria comune modificata, Foo lo preleva immediatamente.
Come posso convincere Maven a cercare prima nel repository locale?
UPDATE: quando il file viene installato nel repository locale, ottiene un nome come foo-1.0.0-SNAPSHOT.jar
, ma quando lo distribuisco, ottiene un timestamp foo-1.0.0-20111104.191316-23.jar
. Penso che questo sia il motivo per cui l'artefatto remoto viene tirato ogni volta. Qualche idea sul perché mvn install
non funziona come mvn deploy
? Ha a che fare con il fatto che ho un repository di istantanee impostato per la distribuzione?
Avete un 'localRepository' nella vostra [settings.xml] (http://maven.apache.org/settings.html) che punta a una posizione inesistente? – millhouse
Confronta la data di sistema con la data del sistema di repo interno (ad es. Nexus). Se è molto più avanti, i suoi timestamp "vinceranno" – millhouse