【自用】maven和maven聚合工程

本文详细介绍了Maven的作用、核心概念,如中央仓库、企业私服、坐标以及项目管理。讲解了Maven的安装配置,包括IDEA的集成,以及标准的项目目录结构。重点阐述了POM文件的构成,如项目坐标、打包方式、依赖管理和版本管理。此外,还列举了常用Maven命令,如clean、compile、package等。文章提到了SSM整合时的注意事项,以及如何避免循环引用。最后,讨论了Maven工程的继承和聚合,以及在大型项目中的应用,如单体项目拆分和模块化管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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
本地仓库
<localRepository>D:\apache-maven-3.6.0\repository</localRepository>

镜像地址
<mirror>
      <id>nexus</id>
      <mirrorOf>*</mirrorOf> 
      <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</mirror>
    
<mirror>
		<id>nexus-javasm</id>
		<mirrorOf>central</mirrorOf>
		<url>http://192.168.20.252:8081/repository/maven-public/</url>
</mirror>
  • 配置好maven环境变量
MAVEN_HOME:解压目录
PATH:%MAVEN_HOME%\bin
通过mvn -version测试环境变量是否配置成功

4.idea关联maven客户端

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

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

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

在这里插入图片描述

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

在这里插入图片描述

5.maven项目目录结构

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

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

src/main/webapp:web资源目录

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

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

6.认识pom文件

  • 项目坐标信息
<groupId>com.javasm</groupId>
  <artifactId>0105jar</artifactId>
  <version>1.0</version>
  • 项目打包方式
  <!--当前项目打包方式:jar,war,pom-->
  <packaging>war</packaging>
  • 项目依赖包
<!--当前项目的依赖jar包,类似原来自己拷贝jar包项目目录-->
  <dependencies>

    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>

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

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:使用内嵌服务器插件来运行项目

 <build>
    <plugins>
      <plugin>
          <groupId>org.eclipse.jetty</groupId>
          <artifactId>jetty-maven-plugin</artifactId>
          <version>9.4.24.v20191120</version>
        <configuration>
          <httpConnector>
            <port>8081</port>
          </httpConnector>
          <webApp>
            <contextPath>/</contextPath>
          </webApp>
        </configuration>
      </plugin>
    </plugins>
  </build>

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整合

找不到日志包的话

在这里插入图片描述

Redis jedis

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

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

在这里插入图片描述

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

在这里插入图片描述

为什么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.youkuaiyun.com/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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值