Question

Quelles sont les meilleures pratiques pour les logiciels et versioning Multimodules projets avec Maven?

Je veux dire, quand je crée un multimodules projet avec Maven, quelle est la meilleure approche pour le versioning? Pour utiliser une version unique pour tous les modules (définis dans le projet haut)? Pour utiliser une version pour chaque module (défini dans le POM de chaque module)? Y at-il une autre approche que je suis absent? Quels sont les avantages et les inconvénients de chaque approche?

En général, ce sont les différents modules sorti en même temps (peut-être partager le même numéro de version)?

Merci

Était-ce utile?

La solution

Honnêtement cela dépend de ce que vous voulez faire. projets multimodules sont créés pour de multiples raisons, l'un d'entre eux étant il vous suffit de déployer ce qui a changé au lieu de tous les modules.

Pensez-y de cette façon: si vous aviez un projet non-multi-module et vous ne devait changer une ligne dans la couche de services, vous devez reconstruire l'ensemble du projet et de déployer à nouveau tout le code ... même bien que votre couche de services va changer.

Avec des projets multi-modules, vous pouvez régénérer votre projet et déployer uniquement ce qui a changé ... vos services. Cela réduit le risque et vous êtes assuré que seuls vos services module modifié.

Vous avez aussi une multitude d'avantages à utiliser des projets multi-modules que je ne suis pas ici, mais liste il y a certainement un avantage énorme pour ne pas maintenir les numéros de version de vos modules synchronisés.

Lorsque vous construisez votre projet, envisagez de le déployer dans un référentiel qui contiendra tous les pots compatibles ensemble pour constructions (chaque génération crée un nouveau dossier avec le nombre le plus parent la version pom). De cette façon, vous n'avez pas besoin de conserver la documentation dont les pots sont compatibles ... ils sont tous simplement déployés ensemble avec un numéro de version.

Autres conseils

Je cherchais une solution à ce problème exact et moi-même versions maven-plugin était exactement ce que je avais besoin. Je ne suis pas comme la version plug-in communication avec le système SCM. Est-ce que les versions du plugin tout ce que nous avons besoin: il fixe un nouveau numéro de version dans tous les poms du projet:

mvn versions:set -DnewVersion=2.0.0

Alors Je peux procéder à commits, les balises et une version serveur de build officiel ...

EDIT :

Les versions plug-in dépend de la façon dont un projet multi-modules maven a été organisé: par conséquent, il ne met pas à jour souvent tous les fichiers POM dans un projet multi-module complexe. J'ai trouvé que sed et trouver faire le travail beaucoup plus fiable:

sed -i 's/1.0.0-SNAPSHOT/1.0.0-RC1/g' `find . -name 'pom.xml'`

En règle générale, vous créez un projet multi-modules parce que vous avez jugé que les différents modules sont parties d'un tout. Peut-être que le client-pièce, le contrôleur monobloc et les services de pièces. Ou peut-être l'interface avec les services.

Dans tous les cas, il est logique d'avoir les numéros de version pour les différents modules pour se déplacer dans la serrure à pas. Cependant Maven ne pas appliquer que en règle générale.

Quant à votre question

sont les différents modules sorti en même temps (peut-être partager le même numéro de version)

Je pense que oui. C'est l'une des raisons pour avoir un projet multi-module. Sinon, vous pourriez avoir des modules comme des projets indépendants.

Bien sûr, cela est le genre de choses qui est en proie à des cas limites et exceptions; -)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top