【自用】maven和maven聚合工程

redis:

String:set,get,getset,setnx,setex,incr,decr

hash:hset,hget,hkeys,hvals,hgetall,hdel,hlen,hexits

list:lpush,lpop,lrange,lindex

set:sadd,smembers,spop,sdiff,sinter,sunion

key:expire,ttl,del

jedis组件:Jedis,JedisPool

0105maven

1.maven作用

svn,git:版本管理工具,在多人协同开发环境下使用。

maven:是一个项目管理工具(创建,编译,运行,打包,测试,依赖包管理)。

通过maven把不同的ide工具下的项目结构统一化。

手工管理jar包,繁琐,同时版本更新不及时。

2.maven中的几个概念

中央仓库:maven官方提供的服务器地址,供下载资源。

企业私服:企业内部通过nexus搭建的maven仓库,下载稳定性。

maven客户端:开发人员需要个人开发机上安装的一套客户端程序,由java语言开发,只提供了命名行操作方式。

本地仓库:通过maven客户端指定本地硬盘某个目录为jar包存储位置。

坐标:maven仓库管理的jar包资源命名,通过groupid,artifactid,version三维坐标来命名一个资源。

3.安装maven客户端

  • 解压maven客户端压缩包
  • 配置conf/settings.xml
本地仓库
D:\apache-maven-3.6.0\repository

镜像地址

      nexus
      * 
      http://maven.aliyun.com/nexus/content/groups/public/

    

		nexus-javasm
		central
		http://192.168.20.252:8081/repository/maven-public/

  • 配置好maven环境变量
MAVEN_HOME:解压目录
PATH:%MAVEN_HOME%\bin
通过mvn -version测试环境变量是否配置成功

4.idea关联maven客户端

在idea下关联mavne,通过idea开发工具下可视化方式来操作maven客户端。

  • file-settings-搜maven,配置maven
  • file-otherSettings-defaultsettings-搜maven

早知道有这个设置全局设置就好了

【自用】maven和maven聚合工程_第1张图片

就选这两个就行,一个是java工程,一个是web工程

【自用】maven和maven聚合工程_第2张图片

5.maven项目目录结构

src/main/java:该目录下编写java源代码

src/main/resources:该目录放置配置文件

src/main/webapp:web资源目录

src/test/java:该目录下编写测试代码

src/test/resources:该目录下放测试环境的配置文件

6.认识pom文件

  • 项目坐标信息
com.javasm
  0105jar
  1.0
  • 项目打包方式
  
  war
  • 项目依赖包

  

    
      junit
      junit
      4.11
      test
    

    
      com.alibaba
      fastjson
      1.2.78
    
  
  • 其他补充
dependency下的scope属性:
test:表示当前依赖包,只对test指令生效,不参数package打包指令.一般用在junit依赖包。
provided:私有,对源码生效,也不参与打包。一般用在servlet-api依赖包。
compile:参与打包
maven自身维护jar包之间的依赖关系。有时候需要排除自动引入的依赖包
 
      org.springframework
      spring-webmvc
      5.3.13
      
      
        
          spring-jcl
          org.springframework
        
      
    
在properties标签下对依赖包的版本进行统一管理
  
    UTF-8
    1.8
    1.8
    5.3.14
    4.0.1
  

7.maven常用命令

clean:清理target编译输出目录。

compile:mavne编译执行,通过maven-compiler-plugin编译插件对项目src下的java代码进行编译。

test:执行test Source代码。一般跳过测试模式,skip test mode

package:项目打包,打jar包或war包

install:把项目打包并安装到本地仓库,可以被其他项目依赖。

deploy:把项目打包并安装本地仓库,并上传maven私服。可以被企业内其他项目引用。

最常用:clean。package,compile

8.运行maven工程

方法1:使用外部tomcat,切记部署后缀为exploded。

方法2:使用内嵌服务器插件来运行项目

 
    
      
          org.eclipse.jetty
          jetty-maven-plugin
          9.4.24.v20191120
        
          
            8081
          
          
            /
          
        
      
    
  

9.自定义骨架

从maven官方骨架创建的项目,缺失目录,以及web.xml有误。

  • 先修复好一个web项目的模板
  • 在pom文件中添加maven-archetype-plugin骨架创建插件
  • 执行archetype:create-from-project指令,去创建骨架,会在target目录下生成骨架内容
  • 进入target-archetype目录,执行install指令,把骨架安装到本地仓库
  • 执行archetype:crawl指令,扫描本地仓库下的所有骨架资源,生成archetype-catalog.xml
  • 找到自定义的骨架坐标信息,打开idea下创建maven项目,点击add archetype添加骨架即可。

10.ssm整合

找不到日志包的话

【自用】maven和maven聚合工程_第3张图片

Redis jedis

只要两个包是永远在一起用的,就不用分别引用

mysql 驱动jar包8。几的要求 那个链接 需要完整连接 后面带时区 和 安全连接的那个东西

在这里插入图片描述

记住这个就是初始化容器的意思

【自用】maven和maven聚合工程_第4张图片

为什么mapper文件要放到resources 因为maven 的编译命令,执行的时候 会用他下面的resources 复制resources文件夹下面的xml文件,compiler插件会编译src下面的java文件

但是没有插件去复制 src目录下的xml文件,造成xml文件丢失

最后发现是端口被占用,老师任务管理器关闭了java的后台进程

**/*的意思

这是一种 AntMatch 语法,解释如下:
“**” 表示任意级目录
“*” 表示任意文件
意思就是把所有 /src/main/java 中所有 xml 文件也打包进包中,当使用 mybatis 这种需要写 xml 的框架的时候会要用到

0106maven

1.maven工程继承

子工程继父工程的依赖项

父工程是一个project,一个project下有多个子module.

父工程:把所有子工程都需要引用的依赖放在dependencies,子module自动继承。有些子module需要引用,有写不需要引用的依赖,放在dependencyManagement进行依赖管理,子module需要手工引入依赖但不用指定版本。

父工程的意义:统一管理依赖项的版本,子module不用指定版本,避免多个子module之间出现相同的依赖版本不同。

2.maven聚合工程

控制层可能起名admin 和 interface

不要想当然的去添加依赖,用什么,再去添加什么

jsonFormat 实体类也要用

老师说说有的子moudle里面不能出现任何版本号信息

大概看懂了,jar包可以随便引,但是功能模块的jar包不能随便引,要注意不要循环引用

老师说只要能让他复用,把它分出去就可以了,这个东西很灵活的

classpath* 连jar包里面都会去找,笑死了

@JsonFormat(shape =JsonFormat.Shape.STRING,pattern =“yyyy-MM-dd HH:mm:ss”,timezone =“GMT+8”)
private Date createTime;

我忘了它怎么用了
[添加链接描述](https://blog.csdn.net/weixin_41860630/article/details/101928062)

单体项目:所有代码放在一个项目中进行编写。

纵向拆分项目:maven聚合工程属于纵向拆分,按照mvc-dao层级结构把单体项目拆分为一个个子module项目。

横向拆分项目:springCloud属于横向拆分,按照功能模块进行拆分。

纵向拆分项目目的:为了提高代码的复用性。把实体,dao,服务,控制层独立为一个个子module,可以被多次引用。

云课堂平台:

后台管理系统接口:管理用户数据(用户,角色,权限),注册用户,课程分类,视频管理,视频审批,授课讲师管理,评论管理,课程收藏。

后台管理前端ui:vue+elementui

门户网站接口:注册,登录,热门课程查看,课程检索,课程收藏,播放视频,发表评论。。。删除评论

门户网站ui:js+css+html+jquery

app:用户注册,登录,查看热门课程,课程检索,收藏课程,观看视频,发表评论。。。删除评论。。。

  • 首先创建好各个子module
  • 把单体项目的全部依赖项copy到父工程的dependencyManagement,把日志,测试等公共依赖放在dependencies
  • 梳理子module之间的依赖关系,不要形成互相依赖。
  • 把单体项目的代码分到各个子module
  • 根据代码来添加依赖
  • 把配置文件分到各个module,建议放在service

你可能感兴趣的:(maven)