Maven 依赖

8 篇文章 0 订阅

        使用 Maven 构建产生的构件(例如 Jar 文件)被其他的项目引用,那么该构件就是其他项目的依赖。

依赖配置

配置信息示例

1.项目信息:

<project>
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.example</groupId>
    <artifactId>my-project</artifactId>
    <version>1.0.0</version>
    <packaging>jar</packaging>
    <name>My Project</name>
    <description>This is a Maven project.</description>
    ...
</project>
  • <modelVersion>:指定使用的 Maven 模型版本。
  • <groupId>:定义项目的组织或者组织唯一标识符。
  • <artifactId>:定义项目的唯一标识符。
  • <version>:定义项目的版本号。
  • <packaging>:定义项目的打包类型,例如 jar、war、pom 等。
  • <name>:定义项目的名称。
  • <description>:定义项目的描述信息。

2.依赖管理:

<project>
    <dependencies>
        <dependency>
            <groupId></groupId>
            <artifactId></artifactId>
            <version></version>
            <type>...</type>
            <scope>...</scope>
            <optional>...</optional>
            <exclusions>
                <exclusion>
                  <groupId>...</groupId>
                  <artifactId>...</artifactId>
                </exclusion>
          </exclusions>
        </dependency>
      </dependencies>
</project>
  • <dependencies>:一个 pom.xml 文件中只能存在一个这样的标签,是用来管理依赖的总标签。
  • <dependency>:包含在 dependencies 标签中,可以有多个,每一个表示项目的一个依赖。
  • <groupId>、<artifactId>、<version>(必要):依赖的基本坐标,对于任何一个依赖来说,基本坐标是最重要的,Maven 根据坐标才能找到需要的依赖。
  • <type>(可选):依赖的类型,对应于项目坐标定义的 
  • <packaging>。大部分情况下,该元素不必声明,其默认值是 jar。
  • <scope>(可选):依赖的范围,默认值是 compile。
  • <optional>(可选):标记依赖是否可选exclusions(可选):用来排除传递性依赖,例如 jar 包冲突

3.构建插件:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.8.1</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>
        ...
    </plugins>
</build>
  • <build>:定义项目的构建配置。
  • <plugins>:包含项目构建插件的列表。
  • <plugin>:每个插件的具体配置。
  • <groupId><artifactId><version>:插件的组织ID、artifact ID 和版本号。
  • <configuration>:插件的配置参数,例如编译器版本等。

4.仓库配置:

<repositories>
    <repository>
        <id>central</id>
        <url>https://repo.maven.apache.org/maven2</url>
    </repository>
    ...
</repositories>
  • <repositories>:定义项目的仓库列表。
  • <repository>:每个仓库的具体定义。
  • <id>:仓库的唯一ID。
  • <url>:仓库的URL地址。

5.插件仓库配置:

<pluginRepositories>
    <pluginRepository>
        <id>central</id>
        <url>https://repo.maven.apache.org/maven2</url>
    </pluginRepository>
    ...
</pluginRepositories>
  • <pluginRepositories>:定义项目构建插件的仓库列表。
  • <pluginRepository>:每个插件仓库的具体定义。

依赖范围

classpath 用于指定 .class 文件存放的位置,类加载器会从该路径中加载所需的 .class 文件到内存中。

Maven 在编译、执行测试、实际运行有着三套不同的 classpath:

  • 编译 classpath:编译主代码有效
  • 测试 classpath:编译、运行测试代码有效
  • 运行 classpath:项目运行时有效

Maven 的依赖范围如下:

  • compile:编译依赖范围(默认),使用此依赖范围对于编译、测试、运行三种都有效,即在编译、测试和运行的时候都要使用该依赖 Jar 包。
  • test:测试依赖范围,从字面意思就可以知道此依赖范围只能用于测试,而在编译和运行项目时无法使用此类依赖,典型的是 JUnit,它只用于编译测试代码和运行测试代码的时候才需要。
  • provided:此依赖范围,对于编译和测试有效,而对运行时无效。比如 servlet-api.jar 在 Tomcat 中已经提供了,我们只需要的是编译期提供而已。
  • runtime:运行时依赖范围,对于测试和运行有效,但是在编译主代码时无效,典型的就是 JDBC 驱动实现。
  • system:系统依赖范围,使用 system 范围的依赖时必须通过 systemPath 元素显示地指定依赖文件的路径,不依赖 Maven 仓库解析,所以可能会造成建构的不可移植。

更多消息资讯,请访问昂焱数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值