首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >POM中的多个依赖作用域

POM中的多个依赖作用域
EN

Stack Overflow用户
提问于 2011-05-10 02:46:55
回答 6查看 21.1K关注 0票数 37

我的POM中有一个依赖项,需要将其设置为"provided“,以便在编译时不包括它,但它仍然可以在我的项目中引用。当我运行测试时,我希望相同的依赖项的作用域为"test“,这样我就不必手动将jar添加到我的类路径中。有没有办法做到这一点或达到类似的结果?

这背后的原因是,我在我的JBOSS lib目录中提供了一些常见的war,所以我希望使用这些war,并为构建的war保留它们的“提供”范围。但是,当我从命令行运行JUnits时,我希望使用存储库中的jar,而无需手动将其添加到类路径中。

提前感谢

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2012-02-08 22:44:40

来自maven documentation

提供了,这很像编译,但表明您希望JDK或容器在运行时提供依赖项。例如,在为Java企业版构建web应用程序时,可以将对Servlet API和相关Java EE API的依赖项设置为所提供的范围,因为web容器提供了这些类。此作用域仅在编译和测试类路径上可用,并且不可传递。

我在maven 3.0.3中检查了它的工作情况。我也有同样的问题,我在编译和测试时需要有一个servlet依赖项,但没有编译进去,因为它是随应用程序服务器发行版一起提供的。

票数 30
EN

Stack Overflow用户

发布于 2011-05-10 22:29:37

您可以使用一个概要文件,该概要文件可以将这些依赖项声明为test,也可以将其声明为提供的依赖项--这取决于对您更方便的是什么:

代码语言:javascript
代码运行次数:0
运行
复制
<profiles>
    <profile>
        <id>whatever</id>
        <activation>
            <property>
                <name>env</name>
                <value>whatever</value> 
            </property>
        </activation>
        <dependencies>
            <dependency>
              <groupId>yours</groupId>
              <artifactId>yours</artifactId>
                <scope>provided</scope>
            </dependency>
        </dependencies>
    </profile>
    <profile>
        <id>test</id>
        <activation>
            <property>
                <name>env</name>
                <value>test</value> 
            </property>
        </activation>
        <dependencies>
            <dependency>
              <groupId>yours</groupId>
              <artifactId>yours</artifactId>
                <scope>test</scope>
            </dependency>
        </dependencies>
    </profile>
</profiles>

这些配置文件可以通过设置属性env来激活,但还有其他方法,f.e.默认激活--看看here吧。

票数 6
EN

Stack Overflow用户

发布于 2011-05-11 16:24:53

尝试声明依赖项两次,每次声明一个作用域。在Maven 2.2.1中工作。

当相同的工件两次出现在不同作用域的依赖关系树中时,在依赖关系解析中会发生令人困惑的事情,但我认为在您的情况下这不应该是问题。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5941100

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档