l'ajout de ressources supplémentaires à une pom maven
Question
J'ai un super pom défini dans lequel je spécifie un répertoire « ressources » pour les ressources. Dans l'un de mes projets, mon pom pom étend cette super, et je voudrais ajouter une ressource supplémentaire. J'ai essayé:
<resources>
<resource>
<targetPath>/</targetPath>
<directory>additionalDir</directory>
</resource>
</resources>
Mais cela aboutit à uniquement additionalDir étant des ressources et ne comprend pas les ressources du super-pom. Est-il possible d'étendre les ressources du super-pom?
La solution
Le comportement que vous avez décrit est prévu.
Rappelez-vous que votre super-POM est héritant de Maven de défaut POM et à peu près tout plugin que vous définissez dans votre pom surcharger les paramètre dans la valeur par défaut POM. À titre d'exemple, pour permettre le filtrage sur la ressource par défaut, vous devez indiquer le chemin dans votre POM. Vous faites ceci:
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
Non ceci:
<resources>
<resource>
<filtering>true</filtering>
</resource>
</resources>
Le répertoire par défaut ne bouillonne pas pour vous, même si vous avez spécifié là. Il pourrait y avoir un MOJO spécial pour le faire pour vous, mais je ne pouvais pas trouver un.
Autres conseils
Voir build-assistant-maven-plugin .
Oui, maven l'emporte sur les ressources du POM parent lors de la redéfinition nouvelle section des ressources.
Cependant, un moyen simple d'ajouter des ressources est à
- Supprimer la section des ressources de votre POM
- Afficher le POM effectif
- Copiez les ressources de votre POM efficace dans votre projet
- Remplacer les chemins absolus avec ceux relatifs
- Ajoutez vos ressources supplémentaires
Je sais que cette question est assez vieux maintenant, mais peut-être quelqu'un trouvera ce UTILE:
Vous pouvez facilement le faire en utilisant le plug-in de ressources Maven.
En fait, ce qu'il fait par défaut (en invoquant les ressources: objectif des ressources) se déplace le contenu de tous les répertoires listés dans la section build / des ressources en utilisant le filtre déclaré dans le ${project.build.outputDirectory}
Si vous voulez maintenant ajouter des ressources supplémentaires sans influencer ces sections, vous pouvez simplement déplacer les ressources là-bas vous. Un non, cela ne signifie pas glisser-déposer là-bas.
Les Maven Resources Plugin
provides un but resources:copy-resources
nommé qui fait exactement pour vous: Faire face à des fichiers en utilisant des filtres d'un endroit à l'autre, ou les états plug-in doc:
Vous pouvez utiliser les ressources de copie-mojo pour copier des ressources qui ne sont pas dans la mise en page par défaut de Maven ou non déclarés dans la construction / élément des ressources et l'attacher à une phase
L'avantage évident par rapport à l'accumulation aide, qui est suggéré dans d'autres solutions, est que, alors que l'accumulation aide est seulement en mesure de prendre des mesures au cours de la phase generate-sources
, le plugin ressources fonctionne dans toutes les phases. (Bien qu'il serait sage de l'exécuter avant l'étape d'emballage)
Un exemple complet sur la façon d'utiliser est fourni , dans le cadre des plugins page du projet.
Qu'est-ce que cela ne se débrouille le contenu du répertoire des ressources qui ne figurent pas « de src/non-packaged-resources
»
dans "${basedir}/target/extra-resources
". Mais depuis le plug-in pot (qui crée l'archive jar) crée essentiellement une archive zip du répertoire « ${project.build.outputDirectory}
», vous pouvez le mettre là.