2015-10-19 3 views
0

J'essaie d'utiliser un certain nombre de nomenclatures dans le groupe org.jboss.bom pour importer les piles API compatibles avec EAP 6.3.0. Ma compréhension est, c'est ce qu'ils sont pour. Mais quand je les référence (en utilisant la portée 'fournie' ou même 'compilée'), les dépendances ne deviennent pas disponibles transitoirement. Étant donné que la portée "compile" est utilisée sur les éléments à l'intérieur des nomenclatures, Maven's documentation du mécanisme de dépendance semble indiquer que ces éléments doivent être ajoutés au chemin de classe de mon projet. Pourtant, je reçois des symboles indéfinis pour les classes qui devraient être introduites.JBoss Maven BOM et dépendances transitives

Par exemple, dans le projet P, j'inclus org.jboss.bom.wfk: jboss-javaee-6.0-with-spring: 2.4 .0-redhat-2 avec la portée 'fournie', mais org.springframework.context.ApplicationContext est indéfini dans P.

Tout cela se passe dans JBoss Dev Studio 8.1.0.GA, si cela fait une différence.

+0

'En utilisant 'provided' scope' * fait * la différence ici. – Tome

+0

@Tome Je ne pense pas que la différence faite par "fourni" explique ce que je vois. Mais merci de m'avoir fait relire le tableau dans le document Maven, car je peux maintenant décrire mon problème plus clairement. Je pensais que la table me donnait un résultat spécifique quand la portée d'une dépendance dans la nomenclature n'est pas spécifiée. Modification de la description en conséquence ... – nclark

+0

Les versions du plugin m2e sont: m2e 1.5.1, m2e wtp 1.1.0, org.jboss.tools.maven. * 1.6.2-Final – nclark

Répondre

0

J'ai trouvé moi-même la solution en lisant la documentation de Maven Dependency plus en détail.

Voici mon offre: vous ne pouvez pas dépendez du plugin Eclipse m2e pour vous voir à travers les mauvaises herbes à dépendance Maven. Savoir quand/comment utiliser la section <dependencyManagement> du POM (et quand ne pas l'utiliser). Sachez en particulier l'invocation spécifique doit Maven lorsque vous souhaitez utiliser une nomenclature: importer la nomenclature dans une section <dependencyManagement> avec <type> de pom et <scope> de import, puis dans la section « régulière » <dependencies> (pas<dependencyManagement>) appellent spécifiquement sur les sous-artefacts dont vous avez besoin à partir du POM, mais omettre la version. (Tout est épelé here.)

Le but de la nomenclature n'est pas de vous permettre d'importer en masse des dépendances en référençant uniquement l'artefact de nomenclature; il s'agit plutôt de s'assurer que les versions des dépendances sont les bonnes, telles que définies par la nomenclature. Ne supposez pas que Maven vous permet d'exprimer des choses en termes logiquement/mathématiquement réduits. Découvrez comment faire plaisir à la bête, et ne comptez pas sur un sorcier pour comprendre cela pour vous. Lisez les documents Maven en détail, découvrez les recettes et suivez-les exactement.