在eclipse中使用Maven分模块搭建SSM框架,创建jar、war、pom工程模块教学,项目的热部署,需要的可以留下邮箱,给大家发整理过的Maven笔记
第一章:Maven概述
(1)Maven是一个项目构建工具,由apache提供,用Java开发的
(2)构建工具:Ant(蚂蚁),Maven(专家)
(3)构建工具作用:帮助程序员进行项目的创建,目录的创建、代码的编译,执行,测试,打包...
(4)传统构建的缺陷:
a:项目之间的依赖不方便,只能通过导包的形式建立关联
b:不能实时更新代码
c:导包方式麻烦,需要自己下载jar进行导入
d:当导入的jar包比较多时,容易发生包的重复,相同包的不同版本,jar包之间版本兼容问题
(5)Maven当前最新版本为3.6.1,本文章使用3.3.9
第二章:Maven常用配件概念
(1)仓库,Repository,用于存放所有的jar包
a:中央仓库,由apache官方提供,境外网址,下载速度慢
b:镜像仓库,由各个国家地区为国内程序员提供的仓库,阿里巴巴
c:本地仓库,jar包永远从本地仓库获取
(2)坐标
a:groupid:组编号,通常是逆向的公司域名
b:artifactid:项目的名称
c:version:版本号
查询jar包坐标的网址:
官网: https://mvnrepository.com/
阿里: https://maven.aliyun.com/mvn/search
第三章:创建Maven工程_jar类型
注:Maven插件、本地仓库(包括jar包),在文章末尾会有网盘下载链接,注意下载
3.1:配置my eclipse运行环境
(1)编码方式:UTF-8(包括Workspace、css、HTML、JSP、XML的编码格式)
(2)检查jdk版本:1.8
注:最好不要使用系统默认的JDK,使用本地安装的JDK,否则工程运行会报错
(3)配置tomcat
(4)个人爱好配置:
a:字体设置
b:去除拼写检查
c:更换工程格式为Package Explorer
3.2:下载Maven并解压
3.3:在eclipse中集成Maven
3.3.1:在eclipse中加载Maven安装目录
注意:在加载完成后,不要立即去创建Maven工程,否则会造成Eclipse卡顿
3.3.2:配置Maven信息
(1)指定Maven的配置文件settings.xml
(2)配置本地仓库位置
E:\Repository
(3)配置镜像仓库位置
用阿里巴巴的仓库,国内仓库,网速快
<!-- 配置镜像仓库地址 -->
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
(4)配置jdk:
<!-- 指定jdk版本 -->
<profile>
<id>jdk-1.8</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.8</jdk>
</activation>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>
</profile>
3.3.3:创建Maven工程
分三种类型:
(1)jar:代表一个javase工程,将来Maven打包时会将这个工程打包成jar包
(2)war:代表一个web工程,打包成war包
(3)pom:表示一个逻辑工程,工程中只做项目管理,不做代码编写
pom:Project Object Model,可以将一个工程当成一个对象
Group Id:表示路径Id别的项目通过此ID进行定位本项目
Artifact Id:工程名称
Version:版本号
0.0.1-SNAPHOT:表示当前工程处于修改阶段,不建议引用
当配置完成后,点击保存,系统就户i根据依赖配置去下载相关jar包,并加载到工程中
第四章:创建Maven工程_war类型
4.1:注意打包类型
(1)packading:war
(2)在项目创建成功后,生成web.xml 文件
(3)应该放在src/main/webapp/WEB-INF/web.xml
(4)建议自动生成,不建议手动创建目录,项目上右键->JavaEE Tools->Generate Deployment Descriptor Stub
4.2:添加项目依赖
(1)需要Tomcat支持,Maven中提供了Tomcat插件,每一个项目都可以有自己独特的Tomcat,便于独立开发某同事便于分布式开发
(2)编码时需要依赖servlet-api.jar和jsp-api.jar
(3)需要依赖相关框架的jar包:spring,springmvc,mybatis...
<scope>test</scope>
表示该包只是在测试的时候生效,在项目运行和打包时不会生效
<scope>provided</scope>
表示该jar包只会在代码编写过程中和编译中生效,不会打包到jar包中
<scope>compile</scope>
表示该包在所有阶段都会有效,包括项目打包阶段,为默认值
<scope>runtime</scope>
表示该包只是在运行时有用,比如数据库驱动包
<!-- Spring -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.1.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>4.1.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.8.13</version>
</dependency>
<!-- SpringMVC -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>4.1.6.RELEASE</version>
</dependency>
<!-- jackson -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.7.3</version>
</dependency>
<!-- MaBatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.38</version>
</dependency>
<!-- web -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax-servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<!-- commons -->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.1</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.4</version>
</dependency>
<!-- log -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.25</version>
</dependency>
<!-- Junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
4.4:运行
maven build
输入命令:clean tomcat7:run
第五章:创建pom工程
5.1:pom工程简介
(1)pom工程是一个逻辑工程,只做项目的管理,不做代码的编写
(2)pom工程通常适一个父工程,拥有多个子工程
(3)pom工程中可以对jar包进行统一管理,子工程可以无需再配置jar包
5.2:pom工程常用标签
(1)因为子工程可能有多个,而多个子工程不可能用到所有负工程中定义的jar包,所以,可以在pom工程中通过<dependencyManagment>标签对jar包进行统一管理
(2)使用<dependencyManagement>标签定义的依赖,只做声明,并不会直接使用,如果需要使用,还是需要通过配置<dependency>标签,父工程中国统一声明依赖,可以有效的集中控制依赖(版本)
(3)使用<properties>标签对依赖jar包的版本进行控制,例如:
<properties>
<spring-version>4.1.6-release</spring-version>
</properties> <version>${spring-version}</version>
第六章:Maven工程间的三种关系
6.1:依赖关系
依赖关系是最弱的一种关系,有A和B两个工程,A工程中需要使用B工程中定义的属性或方法,那么,此时我们说A依赖B
6.2:继承关系
例如有A和B两个工程,B工程继承A工程,要求A工程必须是一个pom工程
在当前工程坐标中,如果groupId和version跟父工程相同,那么可以省略
6.3:聚合关系
聚合关系要求必须是先有继承关系,聚合关系要比积尘搞关系更紧密
将一个大型工程,拆分成多个小工程,这几个小工程合起来是一个工程
创建聚合工程的方式:
(1)先创建一个顶级工程,该工程必须是pom工程
(2)在顶级工程的基础上创建Maven Module
第七章:聚合工程的创建演示
7.1:项目拆分分析
一个项目,有按功能拆分和按层次拆分两种,本次练习按照前台项目和后台项目进行拆分
SSM聚合工程,结构:
(1)顶级工程
名称:project-ssm
类型:pom
pom.xml:所有依赖的管理
(2)实体类模块
名称:ssm-pojo
类型:jar
(3)数据访问模块
名称:ssm-mapper
类型:jar
pom.xml
(4)后台系统
名称:ssm-management
类型:pom
(5)后台系统的控制器模块
名称:management-controller
类型:war
pom.xml
(6)后台系统的服务模块
名称:management-service
类型:jar
pom.xml
(7)后台系统的服务实现模块
名称:management-service-impl
类型:jar
pom.xml
7.2:项目拆分步骤实施
web工程在运行前,需要将整个工程安装在本地仓库
<!-- 添加依赖 -->
<!-- 管理jar包版本 -->
<properties>
<spring-version>4.1.6.RELEASE</spring-version>
<aspectj-version>1.8.13</aspectj-version> <jackson-version>2.7.3</jackson-version> <mybatis-version>3.4.6</mybatis-version>
<mybatis-spring-version>1.3.2</mybatis-spring-version> <mysql-version>5.1.38</mysql-version> <servlet-api-version>2.5</servlet-api-version>
<jsp-api-version>2.1</jsp-api-version> <jstl-version>1.2</jstl-version> <fileupload-version>1.3.1</fileupload-version> <lang3-version>3.4</lang3-version> <log4j12-version>1.7.25</log4j12-version> <junit-version>4.12</junit-version>
</properties>
<dependencyManagement>
<dependencies>
<!-- Spring -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring-version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${spring-version}</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>${aspectj-version}</version>
</dependency> <!-- SpringMVC -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring-version}</version>
</dependency>
<!-- jackson -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${jackson-version}</version>
</dependency>
<!-- MaBatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>${mybatis-version}</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>${mybatis-spring-version}</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql-version}</version>
<scope>runtime</scope>
</dependency> <!-- web -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>${servlet-api-version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>${jsp-api-version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>${jstl-version}</version>
</dependency> <!-- commons -->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>${fileupload-version}</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>${lang3-version}</version>
</dependency> <!-- log -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>${log4j12-version}</version>
</dependency> <!-- Junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit-version}</version>
<scope>test</scope>
</dependency>
</dependencies>
</dependencyManagement> <build>
<pluginManagement>
<plugins>
<plugin>
<!-- Tomcat插件 -->
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<!-- 配置tomcat -->
<configuration>
<path>/</path>
<port>80</port>
</configuration>
</plugin>
</plugins>
</pluginManagement> </build>
第八章:Maven工程的热部署
8.1:热部署概念
热部署指的是通过Maven将项目远程部署到已经启动的服务器上的操作
需要借助tomcat默认提供的管理项目来实现,叫做manager
host-manager文件夹:是对Tomcat服务器进行管理
manager文件夹:是对部署到服务器上的项目进行管理
对于Tomcat7,使用管理器应用程序所需的角色已从各个大哥管理器角色更改为以下四个角色。如果需要分配你希望访问的功能所需的角色;
manager-gui:允许访问HTML、GUI和状态页面
manager-script:允许访问文本界面和状态页面
manager-jmx:允许访问JMX代理和状态页面
manager-status:仅允许访问状态页面
在D:\Java_SoftWare\apache-tomcat-7.0.53-windows-x64\apache-tomcat-7.0.53\conf,修改tomcat-users.xml配置文件
<role rolename="manager-gui" />
<role rolename="manager-script" />
<user username="tomcat" password="tomcat" roles="manager-gui,manager-script"/>
8.2:热部署实施步骤
方法一:页面操作
地址栏输入:http://localhost:8080/manager
然后输入用户名,密码,进入页面进行项目的部署和管理
方法二:脚本命令操作
<!-- 配置tomcat -->
<configuration>
<path>/</path>
<port>80</port>
<!-- 配置热部署 -->
<url>http://192.168.57.165:8080/manager/text</url>
<username>tomcat</username>
<password>tomcat</password>
</configuration>
输入:
如果是第一次部署,输入:clean tomcat7:deploy
如果将项目修改,进行再次部署,输入:clean tomcat7:redeploy
注:
Maven插件及本地jar包仓库下载:
链接:https://pan.baidu.com/s/1vB_S1A7mvADtrkxn1IEtbw
提取码:ij5z
在eclipse中使用Maven分模块搭建SSM框架,创建jar、war、pom工程模块教学,项目的热部署,需要的可以留下邮箱,给大家发整理过的Maven笔记的更多相关文章
- 从零搭建SSM框架(二)运行工程
启动cnki-manager工程 1.需要在cnki-manager 的pom工程中,配置tomcat插件.启动的端口号,和工程名称. 在cnki-manager的pom文件中添加如下配置: < ...
- Eclipse中使用Maven搭建SSM框架
Eclipse中不使用Maven搭建SSM框架:https://www.cnblogs.com/xuyiqing/p/9569459.html IDEA中使用Maven搭建SSM框架:https:// ...
- 使用Maven搭建SSM框架(Eclipse)
今天学习一下使用Maven搭建SSM框架,以前都是用别人配置好的框架写代码,今天试试自己配置一下SSM框架. 这里我的参数是Windows7 64位,tomcat9,eclipse-jee-neon- ...
- Maven项目搭建(二):Maven搭建SSM框架
上一章给大家讲解了如何使用Maven搭建web项目. 这次给大家介绍一下怎么使用Maven搭建SSM框架项目. 首先我们来看一下pom.xml的属性介绍: project: pom的xml根元素. p ...
- 使用maven搭建ssm框架的javaweb项目
目前主流的javaweb项目,常会用到ssm(Spring+Spring MVC+Mybatis)框架来搭建项目的主体框架,本篇介绍搭建SSM框架的maven项目的实施流程.记之共享! 一.SSM框架 ...
- 使用maven搭建SSM框架
使用maven搭建SSM框架,首先得准备好maven环境. 搭建maven环境 第一步:下载maven http://maven.apache.org/download.cgi 下载后解压就可以了. ...
- 详解intellij idea搭建SSM框架(spring+maven+mybatis+mysql+junit)(下)
在上一篇(详解intellij idea 搭建SSM框架(spring+maven+mybatis+mysql+junit)(上))博文中已经介绍了关于SSM框架的各种基础配置,(对于SSM配置不熟悉 ...
- 详解intellij idea搭建SSM框架(spring+maven+mybatis+mysql+junit)(上)
SSM(Spring+SpringMVC+MyBatis)框架集由Spring.SpringMVC.MyBatis三个开源框架整合而成,常作为数据源较简单的web项目的框架. 其中spring是一个轻 ...
- Maven环境下搭建SSH框架之Spring整合Hibernate
© 版权声明:本文为博主原创文章,转载请注明出处 1.搭建环境 Spring:4.3.8.RELEASE Hibernate:5.1.7.Final MySQL:5.7.17 注意:其他版本在某些特性 ...
随机推荐
- JavaEE 项目部署方式
一.手动部署 二.自动部署 “自动化”的具体体现:向版本库提交新的代码后,应用服务器上自动部署,用户或测试人员使用的马上就是最新的应用程序. 搭建上述持续集成环境可以把整个构建.部署过程自动化,很大程 ...
- zz深度学习论文合集大全
Pull requestsIssues Marketplace Explore Learn Git and GitHub without any code! Using ...
- LeetCode 1257. Smallest Common Region
原题链接在这里:https://leetcode.com/problems/smallest-common-region/ 题目: You are given some lists of region ...
- C语言实现计算器,附源码,超简单!
#include<stdio.h> #include<math.h> void main() { calculator(); } double calculator() { / ...
- 日常笔记3关于bool类型数组初始化的问题
一般会有两种考虑,全为true或全为false 赋值方式: <1>memset(boolArray,0,sizeof(Array)); 头文件:#include<cstring> ...
- DVWA SQL Injection 通关教程
SQL Injection,即SQL注入,SQLi,是指攻击者通过注入恶意的SQL命令,破坏SQL查询语句的结构,从而达到执行恶意SQL语句的目的.SQL注入漏洞的危害巨大,常常会导致整个数据库被“脱 ...
- ros脚本断点调试-编写过程可以把过程变量输出到log查看的方法
/caps-man registration-table :do {:foreach i in=[find interface~"5G"] do={:log info messag ...
- App.vue 不触发 beforeRouteEnter
因为要在 router 对应一个路由的组件才可以触发 如果没有将 App.vue 作为某个路由组件(一般不会吧) 就不会触发该导航守卫 应该是想在每次进入应用时加载一些数据 所以放在 App.vue ...
- Python2.x升级python3.x【升级步骤和错误总结】
网上帖子一大堆,按照那些教程操作,确实可以成功安装.但是安装成功之后呢,pip还是用的python2的pip. 切换到python3的pip之后,发现无法下载模块,还会有很多报错信息.以及" ...
- PostMan测试REST接口时候,如何绕过登录的验证
原文地址:https://blog.csdn.net/qq_34178998/article/details/80361315 之前测试的时候,需要页面进行登录之后,才能让访问后台程序,但是在进行接口 ...