2010-09-02 2 views
2

Je ne sais pas s'il me manque quelque chose, mais j'ai un problème avec le Codehaus versions plugin pour Maven. Voici une simplification de ma situation:Le plugin 'versions' de Maven ne récupère pas les propriétés du parent

  • racine:
    • Modulea
    • moduleB

'root' est un POM aggrégateur, à savoir la déclaration Modulea et moduleB comme enfant modules, et A et B ont tous deux la racine parent.

A et B ont une dépendance à l'égard projet C, mais la la version de cette dépendance est définie dans une propriété - dire <project-C.version> - pas Hardcoded. Cette propriété est définie dans racine, donc A et B héritent de la même valeur de version pour le projet C.

Dans racine POM:

<properties> 
    <project-C.version>1.0</project-C.version> 

Dans le module A et B (souvenez-vous racine est parent):

<dependency> 
    <groupId>com.blah</groupId> 
    <artifactId>project-C</artifactId> 
    <version>${project-C.version}</version> 
</dependency> 

Maintenant, dire plus récente version 1.1-SNAPSHOT du projet-C est disponible . Je veux utiliser les versions plug-in pour montrer à moi, alors je lance:

$ cd /projects/root 
$ mvn versions:display-property-updates -DallowSnapshots=true 

mais tout ce que je reçois est quelque chose comme ceci:

 
[INFO] Building root 
[INFO] This project does not have any properties associated with versions 

[INFO] Building moduleA 
[INFO] This project does not have any properties associated with versions 

[INFO] Building moduleB 
[INFO] This project does not have any properties associated with versions 

Il ne fait pas de différence si Je l'exécute sur root, moduleA ou moduleB: ça dit toujours ça. Bien sûr, cela fonctionne si je code en dur le numéro de version du projet C dans les dépendances.

Donc, en résumé: Je veux centraliser les versions de dépendance en tant que propriétés dans une racine (aggrégateur/parent) POM, et je veux que les versions plug-in pour choisir ceux pour objectifs qui travaillent sur les propriétés, à savoir:

  • affichage propriété-updates
  • update-propriétés

Comment puis-je faire? Est-ce que je manque quelque chose? Est-ce un bug dans les versions plugin?

Répondre

2

Il ressemble à la réponse que vous avez reçu dans MVERSIONS-123 n'est pas exact:

Si les propriétés sont définies dans la pom-mère, puis exécutez l'objectif de la pom-mère (y compris les projets d'enfants dans le cadre du agrégateur si nécessaire afin de récupérer les dépendances)

Cette partie est fausse, ou du moins ne se produit pas. Il semble que le plugin de versions n'affichent que des propriétés dans le pom actuel. Déclarant ce qui suit dans le parent fonctionne:

<properties> 
    <project-C.version>1.0</project-C.version> 
</properties> 

<dependencies> 
    <dependency> 
    <groupId>com.blah</groupId> 
    <artifactId>project-C</artifactId> 
    <version>${project-C.version}</version> 
    </dependency> 
</dependencies> 

Mais déclarant la propriété dans la société mère et la dépendance de l'enfant n'a pas (même lors de l'exécution du plug-in sur le parent).

Maintenant, si le comportement décrit par Stephen dans MVERSIONS-123 est le comportement attendu, alors il y a un bug (et vous devriez fournir un projet simple permettant de reproduire, j'ai fait un test simple avec Junit comme dépendance).

Mais dans votre cas (il était peut-être juste un exemple bien) puisque les deux A et B dépendent de C, pourquoi ne vous mettez pas C dans le parent? Cela fonctionnerait. Vous devriez utiliser dependencyManagement de toute façon (et cela fonctionnera si vous ne voulez pas en hériter partout).

+0

Merci, @Pascal. Je suppose que c'est un bug dans le plugin, comme vous le dites succinctement: 'Mais déclarer la propriété dans le parent et la dépendance de l'enfant ne le fait pas (même en exécutant le plugin sur le parent).' Je vais donner un exemple et l'ajouter à MVERSIONS-123. Je passe maintenant à la solution 'dependencyManagement'. –

+0

@Cornel Je suis d'accord. Le téléchargement d'un exemple de projet de démonstration augmentera certainement les chances de réouverture du problème. Il y a quelque chose qui ne va pas. –

2

Cela semblait être un travail pour la section dependencyManagement dans votre pom racine ...

+0

Ouais, je songe, mais il sera beaucoup plus prolixe que la solution de la propriété. –

Questions connexes