目录
- 3.1 maven的配置:配置settings.xml、建立本地仓库目录maven-repo
- 3.2 maven的使用:以Spring项目的配置为例(IDEA2022.2)
- 3.2.3 配置IDEA中maven设置和本地仓库的路径
- 3.3 pom.xml 配置 build.defaultGoal
- 3.4 配置 dependencies.dependency 标记、配置依赖项的"组ID-工件ID-版本号"
- 3.5 更新maven本地仓库(两种方法:"mvn -U install"、IDEA-maven刷新按钮)
1 Java中的依赖和jar文件
在软件开发中除了自己的代码,通常还需要使用别人的代码或资源来完成一个业务,而使用这些导入的文件包就是依赖关系。
在Java中,依赖通常是指jar文件。jar(Java Archive)是一种文件包,它包含了一组代码或资源文件,可以其他的Java类被导入并使用。在文件格式上,jar类似于zip,但是因为它被jvm加载,所以可以跨平台。
当java代码需要使用一些Java的类库、框架(如Spring)或其他组件时(也就是使用依赖时),此时需要将这些依赖的jar文件添加到项目中,并 import 到需要依赖的类中。
2 依赖仓库的设计与实现
在jakartaEE开发中,需要大量的依赖,寻找、更新、管理依赖是一件很繁琐的事情。
而仓库是将所有的依赖集中起来的一种设计,在仓库中可以找到所有需要的依赖文件(jar包)。
如何做到这一点?一种仓库设计是将所有依赖都集中存储到 一个"中央仓库"服务器上,开发人员可以访问中央仓库下载需要的依赖文件。
maven就是基于仓库的自动化的java构建工具,在项目中,它只需要配置 pom.xml 的XML文件就可以完成大量依赖的配置,而不需要手动去寻找和管理依赖。
而且依赖从仓库服务器下载完之后,会被保存到本地仓库(Local Reposity),按照仓库服务器上的依赖的坐标(这个坐标唯一,按照一种“文件目录”的格式存储,按域名定义),进行在别的项目使用相同依赖就不需要重复下载依赖了。
”文件目录“的格式:就比如下面这两个包(package)的坐标:com.example.user 和 com.example.user.controller,这两个包在文件系统中的相对路径分别是:java/com/example/user 和 java/com/example/user/comtroller,坐标中的每一个点(.)就代表了文件目录的一级。
依赖的坐标的定义:域名的倒序,比如 org.springframework.组件名,它就是来自于: springframework.org 这个域名,这个域名真实存在,打开这个域名会跳转到 spring.io。
3 maven项目
3.1 maven的配置:配置settings.xml、建立本地仓库目录maven-repo
安装好 maven 后,需要配置根目录下conf目录下的 settings.xml 文件,配置的内容如下:
······
<localRepository>···\apache-maven-3.8.6\maven-repo</localRepository><!-- maven的安装路径 -->
······
······
<mirrors>
<mirror>
<id>aliyunmaven</id>
<mirrorOf>*</mirrorOf>
<name>阿里云公共仓库</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
</mirrors>
······
······
<profiles>
<profile>
<id>default</id>
<repositories>
<repository>
<id>central</id>
<name>Maven Central</name>
<url>https://repo.maven.apache.org/maven2</url>
<layout>default</layout>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
<repository>
<id>spring</id>
<url>https://maven.aliyun.com/repository/spring</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>central</id>
<name>Maven Central</name>
<url>https://repo.maven.apache.org/maven2</url>
<layout>default</layout>
<snapshots>
<enabled>false</enabled>
</snapshots>
<releases>
<updatePolicy>never</updatePolicy>
</releases>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
<activeProfiles>
<activeProfile>default</activeProfile>
</activeProfiles>
······
······
在配置完 settings.xml 后,在根目录下新建一个文件夹:maven-repo,这个文件夹的作用就是充当本地仓库存储下载的依赖。
这个文件夹被上面配置的 settings.xml 中的<localRepository> 标记注册为maven的本地仓库。
3.2 maven的使用:以Spring项目的配置为例(IDEA2022.2)
3.2.1 创建常规的maven项目
3.2.2 配置facet
3.2.3 配置IDEA中maven设置和本地仓库的路径
3.3 pom.xml 配置 build.defaultGoal
在 project 标记内添加 build.defaultGoal 标记:
<project ······>
······
······
<build>
<defaultGoal>compile</defaultGoal>
</build>
</project>
3.4 配置 dependencies.dependency 标记、配置依赖项的"组ID-工件ID-版本号"
在 project 标记内添加 denpendencies.denpendency 标记,这样就可以添加maven的依赖项了:
注意:我建的项目叫做 luoyi.maventest.springdemo01-1.0-SNAPSHO,其中
组ID/groupId:luoyi.maventest,工件ID/artifactId:springdemo01,版本/version:1.0-SNAPSHOT
Spring框架就是一个组,它的组ID/groupId:org.springframework,其中的任意一个jar包,就是org.springframework的一个工件/artifact。
比如 spring-beans 就是 org.springframework 这个组的一个工件,它的工件Id/artifactId:spring-beans,它的版本/ version 也有很多,比如 5.2.6-RELEASE 版本。
现在,我们添加一下 org.springframework / Spring框架组的几个工件:
<project ······>
······
······
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>5.2.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>5.2.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.2.6.RELEASE</version>
</dependency>
</dependencies>
······
······
</project>
3.5 更新maven本地仓库(两种方法:"mvn -U install"、IDEA-maven刷新按钮)
在终端输入 mvn -U install
强制下载更新本地仓库的依赖(需联网)
或者使用IDEA的刷新按钮:
本文作于2023/3/18,于此留念
标签:依赖,仓库,配置,springframework,maven,org,原理 From: https://www.cnblogs.com/lovecodingforever/p/17231530.html