Maven常用scope作用域说明

作者:KAKAKA2024.01.17 15:23浏览量:11

简介:Maven是一个强大的项目管理工具,它使用scope元素来控制依赖项的使用范围。以下是Maven中常用的scope作用域说明:

在Maven中,scope元素用于控制依赖项的使用范围,即在哪种编译和运行阶段引入依赖。以下是Maven中常用的scope作用域说明:

  1. compile(默认值):编译和运行时有效。这些依赖项会被打包到最终的WAR或JAR文件中,并被其他依赖项所依赖。例如,常见的JAR文件如spring-core就属于这一类。
    例如:
    mysql
    mysql-connector-java
    8.0.12
    compile
  2. provided:编译和运行时有效,但这些依赖项在运行时由容器或其他依赖项提供,因此不会被打包到最终的WAR或JAR文件中。常见的JAR文件如servlet-api就属于这一类。
    例如:
    javax.servlet
    javax.servlet-api
    4.0.1
    provided
  3. runtime:只在运行时有效,这些依赖项在编译时不会引入,但在运行时需要。常见的JAR文件如JDBC驱动程序就属于这一类。
    例如:
    org.postgresql
    postgresql
    42.2.5
    runtime
  4. test:只在测试时有效。这些依赖项在编译和运行时都不会引入,但在测试阶段需要。常见的JAR文件如JUnit就属于这一类。
    例如:
    junit
    junit
    4.13.2
    test
  5. system:只在运行时有效,这些依赖项需要手动指定系统的路径。这种作用域一般不推荐使用,因为它会破坏Maven的隔离性和可移植性。
    例如:
    com.sun
    tools
    1.6.0
    system
    ${JAVA_HOME}/lib/tools.jar
  6. import:这个作用域主要用于依赖管理,它允许你引入另一个Maven项目的dependencyManagement元素,以便在当前项目中继承这些管理规则。
    例如:


    com.google.code.findbugs
    findbugs-maven-plugin
    3.0.5
    maven-plugin



    pom文件中使用import作用域的示例:



    com.google.code.findbugs
    findbugs-maven-plugin
    3.0.5
    maven-plugin
    import