Domanda

Vorrei rilasciare un progetto di istantanea 'foo-1.0-SNAPSHOT' usando il plugin di rilascio maven. Il progetto dipende da un modulo di terze parti 'bar-1.0-SNAPSHOT' che non è stato ancora rilasciato. Uso l'opzione 'allowTimestampedSnapshots' nel pom.xml del mio progetto per consentire le istantanee con timestamp ma suppongo che il modulo di terze parti (barra) non sia timestamp a meno che non lo costruisca io stesso poiché Maven si lamenta ancora delle dipendenze SNAPSHOT non risolte.

Esiste un modo per rilasciare il progetto foo indipendentemente dai progetti SNAPSHOT dipendenti e, in caso contrario, come posso aggiungere un timestamp al progetto di terze parti?

È stato utile?

Soluzione

La risposta breve è la seguente risposta .... la risposta lunga è che puoi aggirarla.

L'unico modo in cui ho affrontato in passato è di forzare efficacemente la libreria di terze parti e tagliare me stesso una versione. Questo ovviamente è più facile a dirsi che a farsi ed è semplicemente difficile se la libreria è grande e complessa e impossibile se la libreria di terze parti è chiusa. Un percorso più semplice forse per avvicinarsi alla terza parte e chiedere loro di tagliare una versione.

Un'altra opzione potrebbe essere quella di copiare il loro pom (assicurarsi che non abbia istantanee) modificare le informazioni sulla versione e installare manualmente il pom e l'artefatto nel proprio repository.

Altri suggerimenti

Il problema è con il nome del parametro allowTimestampedSnapshots , è nella documentazione ma l'origine del plugin utilizza un nome di parametro diverso nell'espressione - ignoreSnapshots .

Quindi usa -DignoreSnapshots = true e l'obiettivo di preparazione del plugin di rilascio ignorerà le dipendenze delle istantanee.

Uso dell'opzione maven-release-plugin

-DignoreSnapshots=true

anziché

-DallowTimestampedSnapshots=true

aiutato nel mio caso, questo consentirà di utilizzare le dipendenze con la versione dello snapshot per preparare ed eseguire una versione.

Questa opzione deve essere gestita con molta attenzione, poiché l'utilizzo di versioni di istantanee in una versione può successivamente interromperla, se la dipendenza di istantanee viene aggiornata, che in genere non è quella desiderata.

La risposta precedente suggeriva di cambiare il gruppo e l'id artefatto ... non farlo poiché Maven non lo riconoscerà come lo stesso artefatto in seguito quando questa dipendenza viene rilasciata e finirai con due copie sul percorso di classe . Il mio metodo preferito è cambiare solo la versione e farò qualcosa del tipo: [versione originale] - [il mio nome dell'organizzazione] - [versione svn da cui l'ho estratta] così ottengo qualcosa come 1.0-SONATYPE-3425. Usando svn rev, posso sempre estrarre di nuovo il sorgente e rattopparlo se necessario e sapere esattamente cosa sto usando senza trascinare l'intero sorgente nel mio svn.

Aggiornamento - I bloggato su questo un po 'di tempo fa.

Installa il vaso con un pom di tua proprietà. In genere cambio il gruppo e l'id artefatto per chiarire che questa non è la versione ufficiale, ma è generalmente la soluzione migliore per il tuo problema.

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