Comment vous supprimez le remplacement de la propriété lors de la création d'un projet à partir d'un archétype?
-
18-09-2019 - |
Question
Je suis en train de créer un projet archtype pour un simple, ce projet contient quelques certs ssl que je voudrais inclut les ressources dans le archtype alors quand le projet est créé ces certs fera partie du projet. Mon problème est que maven essaie de faire un remplacement de la propriété sur les certs lors de la création d'un projet avec l'archétype. Y at-il de toute façon de dire maven de ne pas faire le remplacement de la propriété? Je l'ai déjà essayé ce qui suit:
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
<filtering>false</filtering>
<excludes>
<exclude>**/*.xml</exclude>
</excludes>
</resource>
dans mon pom.xml prototype. Toutes les idées?
La solution
Je ne suis pas sûr de ce que votre problème est exactement (sont vos certificats fichiers xml ??) mais je pense qu'il est lié au fait que la plupart du contenu non binaire d'un archétype est traité par la vitesse lors de la création (voir ARCHETYPE-90 sur ce problème).
Une solution de contournement consiste à configurer le créer -De de projet mojo d'avoir le fichier non filtré par défaut à l'aide:
-Darchetype.filteredExtentions=ext1,ext2,...
Il définit les extensions des fichiers qui seront filtrés et la valeur par défaut comprennent java
, xml
, txt
, vm
, groovy
, jsp
, gsp
, vm
et properties
. Alors exclure xml
de cette liste si vous ne voulez pas xml
à filtrer.
Une autre option serait de spécifier des métadonnées personnalisées pour votre archétype, quelque chose comme ça dans src/main/resources/META-INF/maven/archetype-metadata.xml
:
<?xml version="1.0" encoding="UTF-8"?>
<archetype-descriptor name="myarchetype">
<fileSets>
<fileSet filtered="false" encoding="UTF-8">
<directory>src/foobar</directory>
<includes>
<include>**/*.xml</include>
</includes>
</fileSet>
</fileSets>
</archetype-descriptor>
Voir cette page pour plus les détails sur les métadonnées archétype.
Autres conseils
J'ai eu un problème similaire en essayant d'utiliser $ {basedir} dans archétype des ressources / pom.xml mais il était d'être remplacé quand l'archétype a couru pour créer le projet et ainsi souligné le mauvais répertoire.
La solution est simple. Il suffit d'utiliser \ $ {basedir} au lieu. Cela échappe le signe $ et empêche maven de le remplacer quand l'archétype est exécuté. Ensuite, votre fichier pom.xml généré contiendra $ {basedir} au lieu du répertoire que l'archétype a couru de.