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

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

相关推荐
威哥爱编程3 分钟前
GuavaCache、EVCache、Tair、Aerospike 缓存框架比较
java·缓存·guava
MobTech袤博科技6 分钟前
ShareSDK iOS端如何实现小红书分享
java·大数据·ios
柚几哥哥7 分钟前
JFreeChart 生成Word图表
java·spring boot·word
喜欢猪猪23 分钟前
注解的原理?如何自定义注解?
java·数据库·python
u01040583632 分钟前
Java中的自然语言处理应用
java·开发语言·自然语言处理
明戈戈1 小时前
设计模式-观察者模式
java·观察者模式·设计模式
苟且.1 小时前
ThreadLocal、InheritableThreadLocal 和 TransmittableThreadLocal
java·多线程
诺浅1 小时前
记一次阿里云服务器java应用无法响应且无法远程连接的问题排查
java·运维·服务器
战神刘玉栋1 小时前
《企业实战分享 · 对象存储服务OSS、S3、MinIO》
java·minio·oss·s3
米糕.1 小时前
【Linux】生物信息学常用命令
java·linux·服务器