目录
IntelliJ idea 中创建 Maven JaveSE 项目
IntelliJ idea 中创建 Maven JaveEE 项目
Maven 下载与安装
1.什么是 Maven
Maven 是一个 Java 项目构建和管理工具。
作用:
- 标准化项目结构
- 标准化项目流程(编译,打包,发布...)
- 依赖管理
2.Maven 下载地址
http://maven.apache.org/download.cgi
3.Maven 目录结构
bin目录:Maven的运行脚本。mvn.bat是基于windows的脚本。在cmd中每次输入一条mvn的命令都是在调用并执行这些脚本。
boot目录:该目录只有一个文件plexus-classworlds-x.x.x.jar。他是一个类加载器的框架,相对于JDK中的类加载器,他提供了更丰富的语法以方便配置,Maven使用这个框架来加载自己的类库。
conf目录:该目录包含一个非常重要的文件setting.xml。配置该文件就能在project中定制Maven的行为。
lib目录:包含了所有Maven运行时需要的java类库以及用到的第三方类库。
LICENSE:软件许可证。
NOTICE:所包含的第三方软件。
README.txt:包含Maven的简介。
4.配置环境变量
将解压后的Maven的bin路径配置到环境变量path
在dos窗口下输入mvn -v查看Maven的版本信息
5.Maven 常用命令
- mvn clean 清理
- mvn compile 编译
- mvn test 测试
- mvn package 打包
- mvn clean package 先清理后打包
- mvn install 安装(将项目安装本地仓库)
- mvn deploy 发布(发布到服务器--私服、中央仓库(maven提供))
坐标-仓库-生命周期
1.什么是坐标
组成元素
groupId:一般代表公司名。
artifactId:一般为项目名。
version:版本号。
package:定义Maven项目的打包方式。
classifier:表示在相同版本下针对不同的环境或者jdk使用的jar。
2.什么是仓库
仓库就是指存储所有项目的共享构件(包)的位置。
分为两大类:1.本地仓库,2.远程仓库。其中远程仓库分为:中央仓库,私服,其他公共库。
①本地仓库是在第一次执行maven命令的时候被创建,不是安装maven后创建。
②无论是Windows还是Linux,本地仓库的默认位置都是在用户目录下的${user.home}/.m2/repositpry/
③修改本地仓库的方式:
1.用户范围修改:把setting.xml放到.m2文件下。
2.全局修改:修改maven目录中setting.xml文件的localRepository。
3.修改本地仓库位置
不管是用户范围修改还是全局修改,都是在 settings.xml 文件中加入下面代码即可,只是修改的地方不一样.
用户范围修改,修改 下的 settings.xml 文件,(一般是这个).
全局修改,修改 maven 安装目录中 config 下的 settings.xml 文件.
具体就是修改如下的Xml代码
<settings>
<localRepository>/Users/zhouzhenlin/.m2/repository</localRepository>
</settings>
4.配置阿里云仓库
通过修改${user.home}/.m2/settings.xml 文件来配置远程仓库路径.
具体内容和示意图如下
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
5.Maven生命周期
生命周期介绍
1).Maven有三套相互独立的生命周期。
Clean Lifecycle:在进行真正的构建之前进行一些清理工作。
Default Lifecycle:构建核心部分,编译,测试,打包,部署等等。
Site Lifecycle:生成项目报告,站点,发布站点。
注意:运行任何一个阶段的时候,它前面的所有阶段都会被执行,这也就是为什么我们在运行mvn install的时候,代码会被编译,测试,打包。每个生命周期都包含一些阶段,阶段是有顺序的。
2).Clean Lifecycle
①pre-clean:执行清理前需要完成的工作。
②clean:清理上次构建生成的文件。
③post-clean:执行清理后需要完成的工作。
3).Default Lifecycle
①validate:验证工程是否正确,所需要的资源是否可用。
②compile:编译项目的源代码。
③test:测试已编译的源代码。
④package:已编译的代码打包。
⑤integration-test:将包处理和发布到一个能够进行集成测试的环境。
⑥verify:运行所有检查,验证包是否有效且达到质量标准。
⑦install:把包安装到本地仓库。
⑧deploy:在集成或发布环境下执行,将最终版本的包拷贝到远程仓库。
4).Site Lifecycle
①pre-site:生成项目站点之前需要完成的工作。
②site:生成项目站点文档。
③post-site:生成站点之后需要完成的工作。
④site-deploy:将项目站点发布到服务器。
依赖-聚合-继承
1.依赖
项目中需要引入的jar包称之为依赖。
在pom.xml的dependencies标签里加入dependency标签,具体信息可以去https://mvnrepository.com/查询。
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
1)依赖的范围:依赖范围是用来控制与编译、测试、运行三总classpath的关系。<scope></scope>来设置依赖范围。
注意:在默认情况下scope的范围是compile。
2)依赖的传递性
如果A项目引入了a包,B项目引入了A项目,那么B项目也就引入了a包。
传递性的规则:
1 .路径最近优先:c->b->a,c依赖b,b依赖a。那么c会优先使用b中的包。
2.路径相同配置在前优先:c->b,c->a,c依赖b,c依赖a。如果c把依赖b的代码写在前面那么就优先使用b的包。
3)去除依赖:
如果b->a,而你b中不想要a中的某个包就可以使用去除依赖。
1.选择性依赖(optional)
在a项目里引入的包中加入<optional>true</optional>
2.排除性依赖(exclusion)
在b项目里引用a项目的代码中加入exclusion标签
<dependencies>
<dependency>
<groupId>com.demo</groupId>
<artifactId>demo</artifactId>
<version>1.0-SNAPSHOT</version>
<exclusions>
<exclusion>
<groupId>不引入包的信息</groupId>
<artifactId>不引入包的信息</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
2.聚合
为了一键构建,方便项目构建(compile test package deploy install)
Maven的聚合功能可以通过一个父模块将所有要构建模块整合起来,将父模块的打包声明为POM,通过<modules>将各模块集中到父POM中。
3.继承
目的:为了消除重复依赖和统一管理依赖版本
与面向对象的继承概念一样,通过继承消除重复编码的行为。父模块提取公共的部分,子模块使用<parent>继承父模块获取公共部分。
<parent>
<groupId>com.demo</groupId>
<artifactId>father</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
可继承的POM元素如下:
- groupId:项目组ID,项目坐标的核心元素
- version:项目版本,项目坐标的核心因素
- description:项目的描述信息
- organization:项目的组织信息
- inceptionYear:项目的创始年份
- url:项目的URL地址
- developers:项目的开发者信息
- contributors:项目的贡献者信息
- distributionManagement:项目的部署配置
- issueManagement:项目的缺陷跟踪系统信息
- ciManagement:项目的持续集成系统信息
- scm:项目的版本控制系统西溪
- malilingLists:项目的邮件列表信息
- properties:自定义的Maven属性
- dependencies:项目的依赖配置
- dependencyManagement:项目的依赖管理配置
- repositories:项目的仓库配置
- build:包括项目的源码目录配置、输出目录配置、插件配置、插件管理配置等
- reporting:包括项目的报告输出目录配置、报告插件配置等
IntelliJ idea中配置Maven
如下图,看到在 intelliJ idea 编辑器里面对maven进行配置。
一般默认配置是这样的:
这样的话,你就修改他默认位置的setting.xml文件,就可以修改,本地仓库的地址啦
IntelliJ idea 中创建 Maven JaveSE 项目
1.新建项目
2.选择maven项目
1. 左边选择Maven
2. 勾选Create from archetype
3. 选择org.apache.maven.archetypes:maven-archetype-quickstart
4. Next
3. 项目参数
4.maven 目录
经过上个知识点的IDEA设置设置后,就可以看到如图所示的maven设置
5.确认创建项目
IntelliJ idea 中创建 Maven JaveEE 项目
1.新建项目
2.选中maven webapp格式
1. 左边选中Maven
2. 勾选Create from archetype
3. 选中 org.apache.maven.archetypes:maven-archetype-webapp
4. Next
3.项目参数
4.确认Maven路径
这一步将看到Maven 配置中的参数,无需做改动
5.确认项目名称
无需改动,点击Finish即可
6新建java源代码目录
maven web项目默认是没有java源代码目录的,所以需要手动创建,并设置其为源代码目录
右键main目录-> New->Directory->输入java->右键java->Mark Directory as-> Sources Root
这样就创建了存放java源文件的目录了
7.标记之后的目录结构和颜色如下
8.配置项目和模块的编译输出目录
项目编译输出目录不需要改变,模块输出目录,只需要继承项目输出目录即可.
配置项目编译输出目录,如下图:
配置模块编译输出目录,如下图
9.配置 tomcat 服务器
需要先配置 facts 和 artifacts之后,再进行 tomcat 的配置
配置 tomcat 截图,如下:
10. Maven web 项目完整的项目结构
吃水不忘挖井人,时刻想念发帖人。