JAVAEE管理——Maven

Maven简介

是apache下的一个开源项目,是纯java开发,并且只是用来管理java项目的

Maven好处

普通的传统项目

图片.png

Maven项目

图片.png

依赖管理

need-to-insert-img

图片.png

Maven的好处

依赖管理:就是对项目依赖的jar包的统一管理 可以节省空间

一键构建

可以跨平台

应用于大型项目 可以提高开发效率

Maven构建

下载安装

need-to-insert-img

图片.png

maven的核心文件 maven/apache-maven-3.5.4/conf/settings.xml

need-to-insert-img

核心文件

Maven的三种仓库

本地仓库 自己维护

配置本地仓库需要修改setting.xml文件

<!-- localRepository

  | The path to the local repository maven will use to store artifacts.

  |

  | Default: ${user.home}/.m2/repository 默认本地仓库

  <localRepository>/path/to/local/repo</localRepository>

  -->> default 默认的本地仓库

远程仓库 公司维护

中央仓库 maven团队维护

Maven的目录结构

need-to-insert-img

maven项目目录结构

need-to-insert-img

Maven的目录结构

Maven的常用命令

clean清理

clean是maven工程的清理命令,执行clean会删除target目录的内容

need-to-insert-img

clean命令

Compile

Compile是maven工程的编译命令,作用是将src/main/java下的文件编译为class文件输出到target目录下

need-to-insert-img

图片.png

Test

test是maven工程的测试命令,会执行src/test/java下的单元测试类

need-to-insert-img

图片.png

package

package是maven工程的打包命令,对于java工程执行package打成jar包,对于web工程打成war包

need-to-insert-img

图片.png

install 将项目发布到本地仓库

install是maven工程的安装命令,执行install将maven打成jar包或war包发布到本地仓库

对于web工程 发布到本地仓库并没有任何作用

need-to-insert-img

install

Tomcat:run 一键启动

site 生成对应的工程说明

Maven的生命周期

compile test package install

执行install的时候 compile test package都会执行

need-to-insert-img

图片.png

clean的生命周期

maven对项目构建过程分为三套相互独立的生命周期。

CleanLifecycle 在进行真正的构建之前进行一些清理工作

Default Lifecycle 构建的核心部分,编译,测试,打包,部署等

SiteLifecycle 生成项目报告,站点 发布站点

need-to-insert-img

各阶段生命周期

不同的生命周期命令可以同时执行

mvn cleanpackage

构建Maven项目 IDE:Intelij idea

创建项目

need-to-insert-img

创建项目

选择maven

need-to-insert-img

选择maven

填写项目信息

need-to-insert-img

图片.png

添加tomcat插件

增加war打包

need-to-insert-img

图片.png

添加web目录 注意 这个目录在main/webapp/

need-to-insert-img

创建web目录

创建web资源目录

need-to-insert-img

web资源

在pom.xml添加tomcat插件

need-to-insert-img

pom.xml配置

项目启动配置

编辑配置

need-to-insert-img

编辑配置

添加+ 选择maven

need-to-insert-img

图片.png

配置maven命令

need-to-insert-img

配置maven命令

配置maven仓库

need-to-insert-img

配置maven仓库

在webapp下添加index.html

need-to-insert-img

图片.png

启动项目

need-to-insert-img

图片.png

need-to-insert-img

图片.png

参考大神文章:https://my.oschina.net/u/2935623/blog/1803198

maven坐标定义

每个maven工程都需要定义本工程的坐标,坐标是maven对jar包身份定义:

<!--项目名称,定义为组织名+项目名 类似包名-->cn.probuing.maven<!--模块名称-->maven_tx<!--当前项目版本号-->1.0-SNAPSHOT<!--打包类型-->war* jar:执行package会打成jar包    * war:执行package会打成war包    * pom:用于maven工程的集成,通常父工程设置为pom

maven与Struts2整合

使用struts2与maven传递一个客户id 跳转页面

创建项目

need-to-insert-img

创建项目

设置packaging 为war

<?xml version="1.0"encoding="UTF-8"?>4.0.0cn.probuing.crmmavenProj1.0-SNAPSHOTwar

添加web目录

need-to-insert-img

图片.png

添加tomcat插件

org.apache.tomcat.maventomcat7-maven-plugin2.28080/mavssh

添加依赖 管理jar包

<!--依赖管理-->org.apache.strutsstruts2-core2.3.24javax.servletjsp-api2.0providedjavax.servletservlet-api2.5providedjunitjunit4.10

为避免包冲突,添加servlet-api.jar和jsp-api.jar 注意选择scope为provided

配置struts2

struts.xml src/main/resources/

<?xml version="1.0"encoding="UTF-8"?><!DOCTYPE struts PUBLIC

    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"

    "http://struts.apache.org/dtds/struts-2.3.dtd"><!-- 配置常量 --><!-- 字符集 --><!-- 开发模式 --><!-- 主题 --><!-- 扩展名 --><!-- 通用package -->/info.jsp

web.xml 核心过滤器

struts2org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilterstruts2/*

编写action

publicclassCutomerActionextendsActionSupport{privateLong custId;publicLonggetCustId(){returncustId;    }publicvoidsetCustId(Long custId){this.custId = custId;    }publicStringfindById(){returnSUCCESS;    }}

jsp

<%@ page contentType="text/html;charset=UTF-8"language="java"%>TitleHello Every body it's from maven

依赖范围

Compile

编译时需要,测试时需要,运行时需要,打包时需要

Provided

编译时需要,测试时需要,运行时不需要,打包时不需要

Runtime

编译时不需要,测试时需要,运行时需要,打包时需要

Test

编译时不需要,测试时需要,运行时不需要,打包也不需要

整合框架时依赖冲突的解决

在我们整合框架的时候,在集成了多个框架的时候可能会出现依赖冲突的情况,我们解决依赖冲突主要有以下几个方式

第一声明优先原则

优先声明的会先进行配置,如下配置中Maven会集成spring-beans-4.2.4的依赖库

<!--  spring-beans-4.2.4 -->org.springframeworkspring-context4.2.4.RELEASE<!--  spring-beans-3.0.5 -->org.apache.strutsstruts2-spring-plugin2.3.24

路径优先原则

自己指定jar包

org.springframeworkspring-beans4.2.4.RELEASE

添加排除

使用标签可以指定排除冲突的库

org.apache.strutsstruts2-spring-plugin2.3.24org.springframeworkspring-beans

版本锁定原则

<!--定义变量配置-->4.2.4.RELEASE5.0.7.Final2.3.24<!-- 锁定版本,struts2-2.3.24、spring4.2.4、hibernate5.0.7 -->org.springframeworkspring-context${spring.version}

分模块开发

依赖传递

依赖传递

依赖关系

父工程

模块工程

依赖模块工程的模块工程

在这里需要注意的是 对于有些工程 定义的 依赖的生命周期为scope为test的依赖,需要手动添加到依赖中

作者:So_ProbuING

链接://www.greatytc.com/p/6befb7cf32f8

來源:简书

简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,372评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,368评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,415评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,157评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,171评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,125评论 1 297
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,028评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,887评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,310评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,533评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,690评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,411评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,004评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,659评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,812评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,693评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,577评论 2 353

推荐阅读更多精彩内容

  • Maven简介 是apache下的一个开源项目,是纯java开发,并且只是用来管理java项目的 Maven好处 ...
    So_ProbuING阅读 597评论 0 0
  • 简介 概述 Maven 是一个项目管理和整合工具 Maven 为开发者提供了一套完整的构建生命周期框架 Maven...
    闽越布衣阅读 4,288评论 6 39
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 46,803评论 6 342
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,651评论 18 139
  • 序 由于Andoird的UI元素采用的单一线程模型,只能在UI线程进行更新,于是我们用来更新UI,常用Handle...
    andChen阅读 537评论 0 3