2017-08-31 2 views
1

Dans ma définition archetype maven, je voudrais définir la version par défaut à 0.0.1-SNAPSHOT lorsque l'utilisateur ne saisit rien. Cependant, quand je crée un projet basé sur l'archétype, je suis toujours invité pour la version et la valeur par défaut est 1.0-SNAPSHOT.custom maven archetype: valeur par défaut pour la version non utilisée

Comment faire ceci correctement?

J'ai défini une propriété de version dans le fichier archetype.properties et quand je compile l'archétype, il dit la bonne version et quand je change la valeur dans archetype.properties, je peux voir que la sortie de la console change en conséquence. Juste sur la création d'un projet basé sur l'archétype, je suis à nouveau invité pour la version.

Merci pour votre aide et vos astuces!

(je vais fournir le code si nécessaire)

+0

Quel est votre schéma archétype-métadonnées? – nullpointer

+0

et ne spécifie pas '-Dversion = 0.0.1-SNAPSHOT' n'aide pas? – nullpointer

+0

@nullpointer bien je pensais que si l'utilisateur ne spécifie pas -Dversion alors il faudrait un peu de recul. Ou est -Dversion toujours obligatoire? – user3629892

Répondre

3

Vous pouvez définir des propriétés personnalisées en vous Archétype métadonnées. Jetez un oeil à la archetype-metadata.xml en META-INF/maven. Par exemple:

my-archetype 
| 
+ src 
    | 
    + main 
    | 
    + resources 
     | 
     + META-INF 
     | 
     + maven 
      | 
      + archetype-metadata.xml 

Une propriété personnalisée pour version ressembler à ceci:

<requiredProperties> 
    <requiredProperty key="version"> 
     <defaultValue>0.0.1-SNAPSHOT</defaultValue> 
    </requiredProperty> 
<requiredProperties> 

Plus de détails dans the docs.

Lorsque vous exécutez la commande mvn archetype:generate référence à un archétype de la configuration ci-dessus, vous verrez cela dans la sortie de la console:

[INFO] Using property: version = 0.0.1-SNAPSHOT 

Ou, si vous exécutez la commande mvn archetype:generate avec le paramètre -Dversion=FOO alors vous voir dans la sortie de la console:

[INFO] Using property: version = FOO 

note: cette version est, bien sûr, séparé de la archetypeVersion qui définit la version de l'archétype lui-même plutôt que la version du Modul e a produit par l'archétype.

+0

Vous ne voulez pas dire requiredProperties au lieu de requiredParameters? – user3629892

+0

Oups, oui. J'ai mis à jour la réponse. Merci. – glytching

+0

Eh bien, tout d'abord merci, ça marche :) Cependant, j'ai fait la même chose pour groupId et le paquetage mais il ne cesse de m'indiquer pour ceux-ci et il utilise le groupId de l'archétype lui-même comme valeur par défaut. MAIS: dans le pom généré, le groupId est affiché correctement (je le reçois à partir de l'artifactId en faisant une chaîne de remplacement). Une idée de ce qui me manque encore? – user3629892