首页 > 编程语言 >Java-SSM-Day01 Maven理论

Java-SSM-Day01 Maven理论

时间:2024-05-13 15:11:23浏览次数:14  
标签:Maven 依赖 -- Day01 SSM 构建 org mvn

一、Maven的入门进阶

1.1什么是Maven:掌控软件安装配置以及项目构建依赖管理的软件。

1.3选用Maven-3.6.3

 二、基于IDEA的Maven工程创建

2.1梳理Maven工程GAVP属性:GroupId、ArtifactId、Version、Packaging

  GroupId格式:com.mingxi.业务线.子业务线

        ex: com.mingxi.java

  ArtifactID格式: 产品线名-模块名

        ex: tc-client

  Version格式:主版本号.次版本号.修订好 1.0.0

        ex.1.1.1

  Pacaging格式:jar:打包Java工程、war:打包web工程、pom:不会打包,用作继承的父工程

|-- pom.xml                               # Maven 项目管理文件 
|-- src
    |-- main                              # 项目主要代码
    |   |-- java                          # Java 源代码目录
    |   |   `-- com/example/myapp         # 开发者代码主目录
    |   |       |-- controller            # 存放 Controller 层代码的目录
    |   |       |-- service               # 存放 Service 层代码的目录
    |   |       |-- dao                   # 存放 DAO 层代码的目录
    |   |       `-- model                 # 存放数据模型的目录
    |   |-- resources                     # 资源目录,存放配置文件、静态资源等
    |   |   |-- log4j.properties          # 日志配置文件
    |   |   |-- spring-mybatis.xml        # Spring Mybatis 配置文件
    |   |   `-- static                    # 存放静态资源的目录
    |   |       |-- css                   # 存放 CSS 文件的目录
    |   |       |-- js                    # 存放 JavaScript 文件的目录
    |   |       `-- images                # 存放图片资源的目录
    |   `-- webapp                        # 存放 WEB 相关配置和资源
    |       |-- WEB-INF                   # 存放 WEB 应用配置文件
    |       |   |-- web.xml               # Web 应用的部署描述文件
    |       |   `-- classes               # 存放编译后的 class 文件
    |       `-- index.html                # Web 应用入口页面
    `-- test                              # 项目测试代码
        |-- java                          # 单元测试目录
        `-- resources                     # 测试资源目录

三、Maven核心功能以来和构建管理

  3.1依赖管理和配置

    定义 POM 文件,Maven 能够自动解析项目的依赖关系,并通过 Maven 仓库自动下载和管理依赖,从而避免了手动下载和管理依赖的繁琐工作和可能              引发的版本冲突问题。

  

  <!--  申明版本号 -->
  <version>1.0.0</version>
  <!--  申明打包方式  -->
  <packaging>jar</packaging>
<!--  第三方依赖信息申明
      dependencies :项目依赖信息的集合
           dependency :每个依赖项
                  [gav] :依赖的信息,就是其他maven的工程[jar]
       第三方以来信息怎么知道? 例如找 jackson-core
        1.maven官网 mvnrepository.com里搜索 然后找到Maven信息
        2.maven插件:maven-search   Tools-maven&search

        扩展:
          1.提取版本号
          2.可选属性scope
          scope 引用依赖的作用域
            - compile :main目录 test目录  打包打包 [默认]
            - provided:main目录 test目录  Servlet
            - runtime: 打包运行           MySQL JDBC
            - test:    test目录           junit
        依赖传递:A>B 导入A则自动导入B[确定版本不冲突]
        依赖冲突:A-B-C-A [避免重复依赖]
  

前提:
A 1.1 -> B 1.1 -> C 1.1
F 2.2 -> B 2.2

pom声明:
F 2.2
A 1.1

B 2.2

最后会有 F2.2 A1.1 B2.2
-->

  3.3依赖导入失败以及解决方案

  在使用 Maven 构建项目时,可能会发生依赖项下载错误的情况,主要原因有以下几种:

  1. 下载依赖时出现网络故障或仓库服务器宕机等原因,导致无法连接至 Maven 仓库,从而无法下载依赖。
  2. 依赖项的版本号或配置文件中的版本号错误,或者依赖项没有正确定义,导致 Maven 下载的依赖项与实际需要的不一致,从而引发错误。
  3. 本地 Maven 仓库或缓存被污染或损坏,导致 Maven 无法正确地使用现有的依赖项,并且也无法重新下载!

   解决方案:

    1. 检查网络连接和 Maven 仓库服务器状态。
    2. 确保依赖项的版本号与项目对应的版本号匹配,并检查 POM 文件中的依赖项是否正确。

    3. 清除本地 Maven 仓库缓存(lastUpdated 文件),因为只要存在lastupdated缓存文件,刷新也不会重新下载。本地仓库中,根据依赖的gav属性依次    向下查找文件夹,最终删除内部的文件,刷新重新下载即可!

     

 bat脚本清理

@echo off
rem 这里写你的仓库路径
set REPOSITORY_PATH=D:\Java-SSM\repository
rem 正在搜索...
for /f "delims=" %%i in ('dir /b /s "%REPOSITORY_PATH%\*lastUpdated*"') do (
    del /s /q %%i
)
rem 搜索完毕
pause

  3.4扩展构建管理和插件配置

    项目构建:源代码、依赖库和资源文件等转换成可执行或可部署的应用程序的过程。

**主动触发场景:**

- 重新编译 : 编译不充分, 部分文件没有被编译!
- 打包 : 独立部署到外部服务器软件,打包部署
- 部署本地或者私服仓库 : maven工程加入到本地或者私服仓库,供其他工程使用

命令的方式构建:mvn 构建命令 构建命令 ...

命令描述
mvn clean 清理编译或打包后的项目结构,删除target文件夹
mvn compile 编译项目,生成target文件
mvn test 执行测试源码 (测试)
mvn site 生成一个项目依赖信息的展示页面
mvn package 打包项目,生成war / jar 文件
mvn install 打包后上传到maven本地仓库(本地部署)
mvn deploy 只打包,上传到maven私服仓库(私服部署)

 

可视化方式构建:

 

 

**构建命令周期:**

构建生命周期可以理解成是一组固定构建命令的有序集合,触发周期后的命令,会自动触发周期前的命令!也是一种简化构建的思路!

- 清理周期:主要是对项目编译生成文件进行清理

包含命令:clean
- 默认周期:定义了真正构件时所需要执行的所有步骤,它是生命周期中最核心的部分

包含命令:compile - test - package - install / deploy
- 报告周期

包含命令:site

打包: mvn clean package 本地仓库: mvn clean install

最佳方案
打包: mvn clean package 重新编译: mvn clean compile 本地部署: mvn clean install

**周期,命令和插件:**

周期→包含若干命令→包含若干插件!

使用周期命令构建,简化构建过程!

最终进行构建的是插件!

<build>
   <!-- jdk17 和 war包版本插件不匹配 -->
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <version>3.2.2</version>
        </plugin>
    </plugins>
</build>

四、Maven继承和聚合特性

4.1Maven工程继承

继承特性:在父工程中统一管理项目中的依赖信息,进行统一版本管理!

 语法:

<groupId>com.atguigu.maven</groupId>
<artifactId>pro03-maven-parent</artifactId>
<version>1.0-SNAPSHOT</version>
<!-- 当前工程作为父工程,它要去管理子工程,所以打包方式必须是 pom -->
<packaging>pom</packaging>
<!-- 使用parent标签指定当前工程的父工程 -->
<parent>
  <!-- 父工程的坐标 -->
  <groupId>com.atguigu.maven</groupId>
  <artifactId>pro03-maven-parent</artifactId>
  <version>1.0-SNAPSHOT</version>
</parent>

<!-- 子工程的坐标 -->
<!-- 如果子工程坐标中的groupId和version与父工程一致,那么可以省略 -->
<!-- <groupId>com.atguigu.maven</groupId> -->
<artifactId>pro04-maven-module</artifactId>
<!-- <version>1.0-SNAPSHOT</version> -->

父工程依赖统一管理

  父工程声明版本

 1 <!-- 使用dependencyManagement标签配置对依赖的管理 -->
 2 <!-- 被管理的依赖并没有真正被引入到工程 -->
 3 <dependencyManagement>
 4   <dependencies>
 5     <dependency>
 6       <groupId>org.springframework</groupId>
 7       <artifactId>spring-core</artifactId>
 8       <version>4.0.0.RELEASE</version>
 9     </dependency>
10     <dependency>
11       <groupId>org.springframework</groupId>
12       <artifactId>spring-beans</artifactId>
13       <version>4.0.0.RELEASE</version>
14     </dependency>
15     <dependency>
16       <groupId>org.springframework</groupId>
17       <artifactId>spring-context</artifactId>
18       <version>4.0.0.RELEASE</version>
19     </dependency>
20     <dependency>
21       <groupId>org.springframework</groupId>
22       <artifactId>spring-expression</artifactId>
23       <version>4.0.0.RELEASE</version>
24     </dependency>
25     <dependency>
26       <groupId>org.springframework</groupId>
27       <artifactId>spring-aop</artifactId>
28       <version>4.0.0.RELEASE</version>
29     </dependency>
30   </dependencies>
31 </dependencyManagement>

子工程引用版本

 1 <!-- 子工程引用父工程中的依赖信息时,可以把版本号去掉。  -->
 2 <!-- 把版本号去掉就表示子工程中这个依赖的版本由父工程决定。 -->
 3 <!-- 具体来说是由父工程的dependencyManagement来决定。 -->
 4 <dependencies>
 5   <dependency>
 6     <groupId>org.springframework</groupId>
 7     <artifactId>spring-core</artifactId>
 8   </dependency>
 9   <dependency>
10     <groupId>org.springframework</groupId>
11     <artifactId>spring-beans</artifactId>
12   </dependency>
13   <dependency>
14     <groupId>org.springframework</groupId>
15     <artifactId>spring-context</artifactId>
16   </dependency>
17   <dependency>
18     <groupId>org.springframework</groupId>
19     <artifactId>spring-expression</artifactId>
20   </dependency>
21   <dependency>
22     <groupId>org.springframework</groupId>
23     <artifactId>spring-aop</artifactId>
24   </dependency>
25 </dependencies>

4.2Maven聚合关系

  概念:Maven 聚合是指将多个项目组织到一个父级项目中,通过触发父工程的构建,统一按顺序触发子工程构建的过程!!

  作用:统一管理子项目构建:通过聚合,可以将多个子项目组织在一起,方便管理和维护。
     优化构建顺序:通过聚合,可以对多个项目进行顺序控制,避免出现构建依赖混乱导致构建失败的情况。

  语法:

    父项目中包含的子项目列表。

<project>
  <groupId>com.example</groupId>
  <artifactId>parent-project</artifactId>
  <packaging>pom</packaging>
  <version>1.0.0</version>
  <modules>
    <module>child-project1</module>
    <module>child-project2</module>
  </modules>
</project>

 

标签:Maven,依赖,--,Day01,SSM,构建,org,mvn
From: https://www.cnblogs.com/MinyX/p/18189269

相关文章

  • maven 国内源配置
    <?xmlversion="1.0"encoding="UTF-8"?><settingsxmlns="http://maven.apache.org/SETTINGS/1.2.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://ma......
  • maven的配置文件的心得(profile和mirrorof)
    https://www.cnblogs.com/li1111xin/p/4777965.html1、maven安装后有两个地方有settings.xml,(1)一个是maven安装路径下:conf/settings.xml,(2)一个是用户的本地仓库下:.m2/settings.xml,这个路径是默认的用户的maven的本地仓库的路径(3)如果指定了自定义的本地仓库的路径,那么把setting......
  • MacOS 上 Flutter 3.19.6 修改 maven 的源
    将Flutter中的maven访问源修改为国内镜像源。因为目前网站多数教程已经不适用了,找了很久才找到替换方法,故特此记录。本篇方法参考了此链接。下面是修改的方法:(1)打开Flutter的安装目录/packages/flutter_tools/lib/src/http_host_validator.dart文件 (2)将maven的访......
  • m2_day01 [集合内容回顾]
    课程内容:集合复习集合复习Java集合框架JCF​ CollectionMap​List   SetSortedMap​SortedSet各类集合的特点List:[有序不唯一]Set:[唯一]SortedSet:[有序唯一]Map:[主键......
  • maven
    1.常用命令编译:mvncompile将Java源程序编译成class字节码文件。测试:mvntest并生成测试报告清空:mvnclean将以前编译得到的旧的class字节码文件删除打包:mvnpakage动态web工程打war包,Java工程打jar包。安装jar包到本地仓库中:mvninstall跳过测试:mvnxxx-Dsk......
  • 1-Maven-Nexus3
    1.Maven&Nexus3maven是java编写的开源项目管理工具,采用POM(ProjectObjectModel)来管理项目,所有项目配置信息被保存在POM.xml文件中,通过该文件Maven可以管理整个项目的生命周期私服是架设在局域网的一种特殊远程仓库,目的是代理远程仓库和第三方构件。有了私服务,当Maven需要下载......
  • Maven随手笔记
    1当同时存在多个maven软件时,在windows上要如何区分? 查看当前使用的是哪个maven的指令,mvn-vC:\Users\yangd>mvn-vApacheMaven3.6.3(cecedd343002696d0abb50b32b541b8a6ba2883f)Mavenhome:D:\Java_developer_tools\Must_learn_must_know_technology\MavenProgram\apache......
  • maven 打包 pom build
     <build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.8.1......
  • 在idea中配置maven环境
    在idea中配置maven环境(maven安装目录下建一个mvn_resp文件夹)  配置mvn:  ......
  • IDEA Maven项目开发注意事项
    流程1.编辑pom.xml文件.注意版本匹配2.reloadproject3.下载sourse3.工具栏lifecycle->complile强制更新依赖项:可以在Maven命令中使用-U或--update-snapshots参数,强制更新所有依赖项,而不管缓存状态。例如,运行mvncleaninstall-U。-U如果已经下载并且校验和相同,则......