2016-09-29 7 views
0

J'utilise ce tutorial pour écrire des tests d'intégration pour mon projet. J'ai ajouté ces dépendances à mon projet:Impossible de trouver MavenDependencyResolver dans le chemin de classe.

<dependencyManagement> 
     <dependencies> 
      <dependency> 
       <groupId>org.jboss.shrinkwrap.resolver</groupId> 
       <artifactId>shrinkwrap-resolver-bom</artifactId> 
       <version>3.0.0-alpha-1</version> 
       <type>pom</type> 
       <scope>import</scope> 
      </dependency> 
      <dependency> 
       <groupId>org.jboss.arquillian</groupId> 
       <artifactId>arquillian-bom</artifactId> 
       <version>1.1.11.Final</version> 
       <scope>import</scope> 
       <type>pom</type> 
       <exclusions> 
        <exclusion> <!-- declare the exclusion here --> 
         <groupId>org.jboss.shrinkwrap.resolver</groupId> 
         <artifactId>shrinkwrap-resolver-bom</artifactId> 
        </exclusion> 
       </exclusions> 
      </dependency> 
     </dependencies> 
    </dependencyManagement> 

    <dependencies> 
     <dependency> 
      <groupId>org.jboss.as</groupId> 
      <artifactId>jboss-as-arquillian-container-managed</artifactId> 
      <version>7.1.1.Final</version> 
      <scope>test</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.jboss.spec.archetypes</groupId> 
      <artifactId>jboss-javaee6-webapp-archetype</artifactId> 
      <version>7.1.3.Final</version> 
     </dependency> 

Et je tente ce code dans la méthode de déploiement:

@Deployment 
public static Archive createDeployment() { 
    return ShrinkWrap.create(WebArchive.class, "fileviewer.war") 
      .addAsLibraries(
        DependencyResolvers.use(MavenDependencyResolver.class) 
          .artifact("commons-io:commons-io:2.1") 
          .artifact("org.json:json:20090211") 
          .resolveAsFiles()); 
} 

Mais je ne peux pas trouver DependencyResolvers et MavenDependencyResolver classes dans mon classepath, ce cours supose être en shrinkwrap-resolver-bom. Qu'est-ce que je fais mal?

Répondre

3

Lorsque vous mentionnez des dépendances dans la balise <dependencyManagement>, cela signifie simplement que ces dépendances sont simplement disponibles. Pour que vous puissiez les utiliser, vous devez l'inclure explicitement en dehors de la balise <dependencyManagement> (Tout comme vous l'avez fait pour boss-as-arquillian-container-managed et jboss-javaee6-webapp-archetype).
Donc, dans votre cas, supprimez le tag <dependencyManagement> ou incluez shrinkwrap-resolver-bom en dehors du tag <dependencyManagement>. De plus, l'utilisation de la balise <dependencyManagement> est plus logique lorsque vous travaillez avec un projet maven multi-module (où vous avez 1 module parent et plusieurs modules enfants) et lorsque vous voulez contrôler les dépendances et ses versions depuis le parent. pom.
Dans votre cas, si vous travaillez avec un seul module, je vous suggère de supprimer la balise <dependencyManagement> et d'inclure toutes vos dépendances au sein de l'étiquette <dependencies>. Cela devrait être suffisant.