maven的原理、配置与简单应用
目录
- 3.1 maven的配置:配置settings.xml、建立本地仓库目录maven-repo
- 3.2 maven的使用:以Spring框架的工件的依赖配置为例(IDEA2022.2/maven3.8.6)
- 3.2.3 配置IDEA中maven设置和本地仓库的路径
- 3.3 `设置 - Maven - 运行程序`中的VM选项
- 3.4 pom.xml 配置 build.defaultGoal
- 3.5 配置 dependencies.dependency 标记、配置依赖项的"组ID-工件ID-版本号"
- 3.6 更新maven本地仓库(两种方法:"mvn -U install"、IDEA-maven同步按钮)
--关于maven的多模块工程还有一些配置,但是这里不再赘叙了--
1 Java中的依赖和jar文件
在软件开发中除了自己的代码,通常还需要使用别人的代码或资源来完成一个业务,而使用这些导入的文件包就是依赖关系。
在Java中,依赖通常是指jar文件。jar(Java Archive)是一种文件包,它包含了一组代码或资源文件,可以其他的Java类被导入并使用。在文件格式上,jar类似于zip,但是因为它被jvm加载,所以可以跨平台。
当java代码需要使用一些Java的类库、框架(如Spring)或其他组件时(也就是使用依赖时),此时需要将这些依赖的jar文件添加到项目中,并 import 到需要依赖的类中。
2 依赖的仓库与maven
在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>alimaven-new-public</id>
<mirrorOf>public</mirrorOf>
<name>aliyun maven public</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
<mirror>
<id>alimaven-new-spring</id>
<mirrorOf>spring</mirrorOf>
<name>aliyun maven spring</name>
<url>hhttps://maven.aliyun.com/repository/spring</url>
</mirror>
<mirror>
<id>alimaven-new-spring-plugin</id>
<mirrorOf>spring-plugin</mirrorOf>
<name>aliyun maven spring plugin</name>
<url>https://maven.aliyun.com/repository/spring-plugin</url>
</mirror>
<mirror>
<id>alimaven-new-google</id>
<mirrorOf>google</mirrorOf>
<name>aliyun maven google</name>
<url>https://maven.aliyun.com/repository/google</url>
</mirror>
</mirrors>
······
······
<profiles>
<profile>
<id>default</id>
<repositories>
<repository>
<id>public</id>
<url>https://maven.aliyun.com/repository/public</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></pluginRepositories>
</profile>
</profiles>
<activeProfiles>
<activeProfile>default</activeProfile>
</activeProfiles>
······
······
在配置完 settings.xml 后,在根目录下新建一个文件夹:maven-repo,这个文件夹的作用就是充当本地仓库存储下载的依赖。
这个文件夹被上面配置的 settings.xml 中的<localRepository> 标记注册为maven的本地仓库。
3.2 maven的使用:以Spring框架的工件的依赖配置为例(IDEA2022.2/maven3.8.6)
3.2.1 创建常规的maven项目
3.2.2 配置facet/模块
3.2.3 配置IDEA中maven设置和本地仓库的路径
3.3 `设置 - Maven - 运行程序`中的VM选项
在VM选项中添加:-DarchetypeCatalog=internal
可以加快Maven更新的速度;
3.4 pom.xml 配置 build.defaultGoal
在 project 标记内添加 build.defaultGoal 标记:
<project ······>
······
······
<build>
<defaultGoal>compile</defaultGoal>
</build>
</project>
3.5 配置 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.6 更新maven本地仓库(两种方法:"mvn -U install"、IDEA-maven同步按钮)
在终端输入 mvn -U install
强制下载更新本地仓库的依赖(需联网)
或者使用IDEA的刷新按钮:
4 多模块工程中pom.xml的配置
4.1 创建多模块项目
4.1.1 根模块与子模块
利用Maven可以方便的构建Java项目的多模块工程,例如,一个多模块工程包括:公共代码模块、web服务模块、独立java应用模块,这些模块的包名如下列表所示:
- common_module
- web_module
- jar_module
现在只有唯一的一个pom.xml,这个pom文件其实多模块工程中的根模块的pom文件,接下来创建上列子模块:
先在根模块pom.xml文件中配置<module/s>标记,并填写这些子模块的名字,之后根据IDEA的提示创建模块:
之后将IDEA自动创建的子模块添加到 ` 设置 - 项目结构 - 模块` 中:
添加这三个子模块后,观察项目空间:
4.2 <parent>标记和依赖管理
如图所示,这个就是一个parent标记,这是spring-boot提供的一个依赖管理包,便于采用spring-boot默认的依赖版本:
后面的还有pom.xml的dependencyManager标记、properties/y标记等等,这里就不再赘叙了
如果有时间可以继续更新,没时间就写到这里
本文作于2023/3/18,于此留念