8
votes

Maven Archetype n'utilise pas de propriétés pour créer des noms de module

J'ai créé un archétype où vous pouvez définir le Modulename (ou vous attendre à) en utilisant Un nom de propriété requis Modulename, voici les métadonnées de l'archétype XML (réduit, que j'ai également essayé avec des résultats similaires) xxx

après l'installation et la génération, la valeur Modulename n'est pas utilisée dans le nom du répertoire ou artifactide, les valeurs de résolution sont xxx

la valeur est remplacée correctement sur certains autres fichiers du projet, de sorte que pas de problèmes d'orthographe, je suppose.

J'ai vu beaucoup de choses similaires, mais toutes en utilisant rootpartifactide et en fait Si j'utilise roolotartifactid (comme partie de départ du nom), cela fonctionne comme prévu.

Naviguez pour trouver un problème similaire, une idée de la raison pour laquelle cela ne fonctionne pas, ni comment le faire fonctionner? < / p>


0 commentaires

4 Réponses :


2
votes

regarder à l'intérieur des sources maven-archétype (version 2.2), semble que la seule valeur possible à utiliser est roolopartifactide extraite à partir defaultfileSetchecheTypegenerator xxx


1 commentaires

Voir Bug Jira.Codehaus.org/browse/areType-191 qui ne clarifie pas les choses à beaucoup, mais au moins le problème est déjà autour



4
votes

J'ai trouvé un travail raisonnable autour.

semble le seul endroit où vous ne pouvez utiliser que la racine "forte> rootpartifactide est la élément du descripteur d'archéype , mais dans tous les autres endroit où vous pouvez utiliser la propriété modulename sans aucun problème.

Qu'est-ce que j'ai fait:

Utilisez $ {modulename} dans

  • artifactide dans le pom
  • Certaines dépendances par défaut
  • la définition du module dans le POM principal ( module - $ {modulename} )
  • etc.

    Utilisez __ modulename __ dans

    • Nom du paquet en SRC / Main / Java & Ressources

      dans le descripteur d'artefact

      • Utilisez un nom de module de correction quelque chose comme Module-Sample1 & Module-Sample2 (et bien sûr nommer les répertoires à l'intérieur les ressources d'artefact de la même manière).

        choses à réparer après la création du projet

        1. Nom du répertoire des modules
        2. Sortez les éléments du module dans le POM principal qui contient un échantillon de module [12]

          Tout cela dans un script d'ant incorporé dans un postcreate-pom.xml être exécuté après la création de projet.

          Et cela fonctionnait bien.

          J'espère que c'est utile pour quelqu'un.

          Merci à tout le monde qui prend juste le temps de lire mon Question, Tonio.


3 commentaires

J'ai le même problème. Que voulez-vous dire avec 'postCreate-pom.xml'? Existe-t-il un moyen standard de faire une action post-créature à la fin d'une création de projet?


Eh bien, je n'ai pas trouvé de moyen de le faire, je viens de créer le postCréate-pom.xml dans le cadre du projet et l'exécuter ensuite pour terminer la configuration du projet.


L'approche correcte est celle de @sgpalit (même si elle n'est pas simple)



1
votes

Après avoir généré l'archétype à partir d'un projet, modifiez le fichier cible \ sources générées \ archétype \ src \ Ressources \ meta-inf \ maven \ archétype-metadata.xml .

. Ajouter xxx

Cela le fera filtrer votre fichier POM! Puis exécutez mvn installer à nouveau.


1 commentaires

Le problème que j'avais était que j'ai essayé d'utiliser $ {artifactid} dans l'un des fichiers de configuration .yml et cela n'a pas fonctionné. Entrer dans l'archétype-métadata.xml et inclure / * .yml fonctionne. Merci



3
votes

archétype-métadata.xml et pom.xml du sous-module: xxx xxx


2 commentaires

Yo a sauvé ma journée! Merci


Même si c'est la bonne réponse, cela vaut la peine d'élaborer. Afficher la structure de répertoire dans l'archeType-Ressources au moins parce que c'est très pas simple