Maven 依赖

使用 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 仓库解析,所以可能会造成建构的不可移植。

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

相关推荐
mghio7 小时前
Dubbo 中的集群容错
java·微服务·dubbo
咖啡教室12 小时前
java日常开发笔记和开发问题记录
java
咖啡教室12 小时前
java练习项目记录笔记
java
鱼樱前端13 小时前
maven的基础安装和使用--mac/window版本
java·后端
RainbowSea13 小时前
6. RabbitMQ 死信队列的详细操作编写
java·消息队列·rabbitmq
RainbowSea14 小时前
5. RabbitMQ 消息队列中 Exchanges(交换机) 的详细说明
java·消息队列·rabbitmq
李少兄15 小时前
Unirest:优雅的Java HTTP客户端库
java·开发语言·http
此木|西贝15 小时前
【设计模式】原型模式
java·设计模式·原型模式
可乐加.糖16 小时前
一篇关于Netty相关的梳理总结
java·后端·网络协议·netty·信息与通信