为什么maven提供依赖?

时间:2016-07-19 21:54:55

标签: java maven dependency-management

我创建了一个简单的项目

<dependencies>
    <dependency>
        <groupId>org.glassfish.jersey.ext</groupId>
        <artifactId>jersey-mvc-jsp</artifactId>
        <version>2.23.1</version>
    </dependency>
</dependencies>

接下来,我跑了

mvn dependency:tree

结果:

[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ asd ---
[INFO] sdddas:asd:war:1.0-SNAPSHOT
[INFO] \- org.glassfish.jersey.ext:jersey-mvc-jsp:jar:2.23.1:compile
[INFO]    +- org.glassfish.hk2.external:javax.inject:jar:2.4.0-b34:compile
[INFO]    +- org.glassfish.jersey.containers:jersey-container-servlet-core:jar:2.23.1:compile
[INFO]    |  +- org.glassfish.jersey.core:jersey-common:jar:2.23.1:compile
[INFO]    |  |  +- javax.annotation:javax.annotation-api:jar:1.2:compile
[INFO]    |  |  +- org.glassfish.jersey.bundles.repackaged:jersey-guava:jar:2.23.1:compile
[INFO]    |  |  +- org.glassfish.hk2:hk2-api:jar:2.4.0-b34:compile
[INFO]    |  |  |  +- org.glassfish.hk2:hk2-utils:jar:2.4.0-b34:compile
[INFO]    |  |  |  \- org.glassfish.hk2.external:aopalliance-repackaged:jar:2.4.0-b34:compile
[INFO]    |  |  +- org.glassfish.hk2:hk2-locator:jar:2.4.0-b34:compile
[INFO]    |  |  |  \- org.javassist:javassist:jar:3.18.1-GA:compile
[INFO]    |  |  \- org.glassfish.hk2:osgi-resource-locator:jar:1.0.1:compile
[INFO]    |  \- org.glassfish.jersey.core:jersey-server:jar:2.23.1:compile
[INFO]    |     +- org.glassfish.jersey.core:jersey-client:jar:2.23.1:compile
[INFO]    |     +- org.glassfish.jersey.media:jersey-media-jaxb:jar:2.23.1:compile
[INFO]    |     \- javax.validation:validation-api:jar:1.1.0.Final:compile
[INFO]    +- org.glassfish.jersey.ext:jersey-mvc:jar:2.23.1:compile
[INFO]    |  \- javax.servlet:servlet-api:jar:2.4:compile
[INFO]    \- javax.ws.rs:javax.ws.rs-api:jar:2.0.1:compile
[INFO] ------------------------------------------------------------------------

然后

mvn package

结果我在WEB-INF / lib中看到带有servlet-api-2.4.jar的war文件

为什么呢?如果我看看jersey-mvc-jsp.pom,我会看到

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>servlet-api</artifactId>
    <version>${servlet2.version}</version>
    <scope>provided</scope>
</dependency>

我在我的pom文件中定义了相同的依赖项,将范围设置为提供,现在我的war文件不包含servlet-api-2.4.jar。但我仍然不明白为什么maven把它放在那里

0 个答案:

没有答案