Sembra un profilo o una situazione di classificatore
Tipicamente, il processo di rilascio di Maven implica il tagging del codice sorgente che è stato usato per costruire l'artefatto. Ad esempio, supponiamo che tu stia creando un artefatto di guerra. Il processo di rilascio essenzialmente effettua le seguenti operazioni:
- Verifica che la build corrente non dipenda da alcun build SNAPSHOT (dato che potrebbero cambiare in qualsiasi momento e influenzare il codice di produzione)
- Aggiorna pom.xml per fornire un numero di versione che rappresenta la versione (ad esempio 0.0.1-SNAPSHOT diventa 0.0.1)
- Controlla pom.xml aggiornato nel controllo della versione e contrassegna tutti i sorgenti con il numero della versione (ad esempio cvs / tags / 0.0.1)
- Distribuisce la risorsa costruita nel repository di rilascio in modo che i team possano condividerla
In Subversion, questo approccio è completamente supportato attraverso il normale processo di tagging. Non posso commentare Git, temo.
E per la nostra situazione con ambienti speciali?
Tipicamente, Maven incoraggia l'uso di un singolo artefatto rilasciato che non cambia mentre si muove attraverso ambienti diversi (si pensi alla configurazione esterna attraverso i file di proprietà e / o JNDI). Se si riscontra un problema all'interno di un artefatto rilasciato, viene reindirizzato agli sviluppatori (che ora stanno lavorando su 0.0.2-SNAPSHOT) e 0.0.1 è effettivamente in scatola. Gli sviluppatori riprovano con 0.0.2 e così via. Ci sono ovviamente delle varianti, ma questo è un approccio comune.
Se i tuoi artefatti devono essere diversi per ogni ambiente, allora Maven può creare un artefatto differente basato su un'impostazione di profilo (molto personalizzabile) o un classificatore. Dalla documentazione di Maven :
The classifier allows to distinguish
artifacts that were built from the
same POM but differ in their content.
It is some optional and arbitrary
string that - if present - is appended
to the artifact name just after the
version number. As a motivation for
this element, consider for example a
project that offers an artifact
targeting JRE 1.5 but at the same time
also an artifact that still supports
JRE 1.4. The first artifact could be
equipped with the classifier jdk15 and
the second one with jdk14 such that
clients can choose which one to use.
Another common use case for
classifiers is the need to attach
secondary artifacts to the project's
main artifact. If you browse the Maven
central repository, you will notice
that the classifiers sources and
javadoc are used to deploy the project
source code and API docs along with
the packaged class files.