Maven理解Scope范围属性对包的作用域管理

star2017 1年前 ⋅ 443 阅读

整理下Maven依赖包作用范围Scope属性值,默认值是compile

Scope四个属性值

依赖项中的Scope元素用于引用当前任务的类路径(编译和运行时,测试等)以及如何限制依赖项的传递性。

作用范围

  • compile - 这是默认范围,如果未指定则使用。所有类路径中都提供了编译依赖项。此外,这些依赖项将传播到依赖项目。
  • provided - 这很像编译,但表示您希望JDK或容器在运行时提供它。它仅在编译和测试类路径中可用,并且不可传递。
  • runtime - 此范围指示编译不需要依赖项,但是用于执行。它位于运行时和测试类路径中,但不是编译类路径。
  • test - 此范围表示正常使用应用程序不需要依赖关系,并且仅适用于测试编译和执行阶段。它不是传递性的。
  • system - 此范围与提供的类似,只是您必须提供明确包含它的JAR。工件始终可用,不会在存储库中查找。

打包范围

  • compile:默认值,对编译范围有效(所有范围),在编译和打包时都会将依赖打包进去。
  • provided: 在编译和测试的过程有效,最后打成 war 包时不会加入,认为目标容器已提供该jar包。如:servlet-api
  • runtime: 在运行的时候依赖,在编译的时候不依赖。
  • test:在测试时使用,在编译和打包时都不会加入这个依赖,如:junit

使用示例

<dependency>
    <groupId>javax.servlet.jsp</groupId>
    <artifactId>javax.servlet.jsp-api</artifactId>
    <version>2.3.1</version>
    <scope>provided</scope>
</dependency>

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.0.1</version>
    <scope>provided</scope>
</dependency>
更多内容请访问:IT源点

相关文章推荐

全部评论: 0

    我有话说: