2016-09-29 4 views
0

Я использую это tutorial, чтобы написать интеграционные тесты для моего проекта. Я добавил такие зависимости для моего проекта:Невозможно найти MavenDependencyResolver в моем классе.

<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> 

И я пытаюсь этот код в методе развертывания:

@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()); 
} 

Но я не могу найти DependencyResolvers и MavenDependencyResolver классов в моем classepath, это классы supose быть в shrinkwrap-resolver-bom. Что я делаю не так?

ответ

3

Когда вы указываете зависимости в теге <dependencyManagement>, это просто означает, что эти зависимости доступны только для использования. Чтобы вы их использовали, вы должны явно включить его за пределами тега <dependencyManagement> (точно так же, как вы сделали для boss-as-arquillian-container-managed и jboss-javaee6-webapp-archetype).
Итак, в вашем случае либо удалите тег <dependencyManagement>, либо включите shrinkwrap-resolver-bom за пределами метки <dependencyManagement> еще раз.

Кроме того, использование тега <dependencyManagement> имеет больше смысла, когда вы имеете дело с мультимодульным проектом maven (где у вас есть один родительский модуль и несколько дочерних модулей) и когда вы хотите управлять зависимостями и его версиями из родительского пОМ.
В вашем случае, если вы работаете только с одним модулем, я бы предложил удалить тег <dependencyManagement> и включить все ваши зависимости только в тег <dependencies>. Этого должно быть достаточно.

Смежные вопросы