返回顶部

maven的原理、配置与简单应用


目录

1 Java中的依赖和jar文件

2 依赖的仓库与maven

3 maven项目

 - 3.1 maven的配置:配置settings.xml、建立本地仓库目录maven-repo

 - 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选项

 - 3.4 pom.xml 配置 build.defaultGoal

 - 3.5 配置 dependencies.dependency 标记、配置依赖项的"组ID-工件ID-版本号"

 - 3.6 更新maven本地仓库(两种方法:"mvn -U install"、IDEA-maven同步按钮)

4 多模块工程中pom.xml的配置

 - 4.1 创建多模块项目

   -   4.1.1 根模块和子模块

 - 4.2 <parent>标记

--关于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,于此留念

posted @ 2023-03-18 21:11  你好,一多  阅读(278)  评论(0编辑  收藏  举报