java - 在我的类路径中找不到 MavenDependencyResolver。

标签 java maven dependencies jboss-arquillian

我正在使用这个tutorial为了为我的项目编写集成测试。我将这样的依赖项添加到我的项目中:

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

但是我在类路径中找不到 DependencyResolversMavenDependencyResolver 类,这些类应该位于 shr​​inkwrap-resolver-bom 中。我做错了什么?

最佳答案

当您在 <dependencyManagement> 中提到依赖项时标签,它只是意味着这些依赖项可供使用。为了让您使用它们,您应该将其显式包含在 <dependencyManagement> 之外。标签(就像您对 boss-as-arquillian-container-managedjboss-javaee6-webapp-archetype 所做的那样)。
因此,在您的情况下,要么删除 <dependencyManagement>标记或包含 shrinkwrap-resolver-bom <dependencyManagement>之外再次标记一次。

此外,使用<dependencyManagement>当您处理多模块 Maven 项目(其中有 1 个父模块和多个子模块)并且想要从父 pom 中控制依赖项及其版本时,标记更有意义。
就您而言,如果您仅使用 1 个模块,那么我建议删除 <dependencyManagement>标记并在 <dependencies> 中包含所有依赖项标签。这应该足够了。

关于java - 在我的类路径中找不到 MavenDependencyResolver。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39771991/

相关文章:

android - 更新支持库后的 ActionBarSherlock 依赖问题

java - 将 ISO 时间戳格式的 Java String 转换为 SimpleDateFormat

java - 多态性细胞写作

java - 如何检测 Scala 源代码中对 Java 类的依赖?

spring - 使用Maven更新Spring框架版本后Eclipse的Tomcat Server无法启动

maven - 为什么Nexus(3.0.2)不会将快照jar返回Gradle(3.2.1)而是404状态?

c# - 包装第 3 方类 c# 的最佳方法是什么

java - 对 Grails/Groovy 内存泄漏进行故障排除?

java - 了解如何反转链表?

maven - 在此命令 : mvn -pl <project list > 期间究竟发生了什么