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

链接:https://www.jianshu.com/p/6befb7cf32f8

來源:简书

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

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