maven
一.简介
maven是Apache下面的一个存java语言开发的开源项目;基于项目对象模型(POM)
maven是一个项目管理工具,可以对java项目进行构建,依赖管理(jar包)
概念:
1.maven中央仓库:
中央仓库由maven的社区来提供,其中包含了大量常用的库
2.maven远程仓库:
我们自己定义的服务仓库
3.maven本地仓库:
我们自己本地电脑中的仓库,maven所需要的所有的构件都是直接从本地仓库进行获取
如果本地仓库没有,首先尝试去中央仓库下载,然后去远程仓库中下载
二、安装
下载:https://archive.apache.org/dist/maven/maven-3/
1、解压
把下载的压缩包中的文件夹解压到某个目录,比如

2、配置环境变量
MAVEN_HOME:地址
PATH:%MAVEN_HOME%\bin
cmd:meven-version
三、使用
1.配置:

conf\setting 中 <localRepository>C:\Users\Administrator\Desktop\liwenzheng\apache-maven-3.5.0\.m2\repository</localRepository>
这个路径可以自定义,用的时候要找到
1.1 本地仓库

这个路径可以自定义,只要你到时候可以找到就行
1.2中央仓库
<mirror>
<id>maven1</id>
<name>repo1</name>
<mirrorOf>central</mirrorOf>
<url>http://repo1.maven.org/maven2</url>
</mirror>
<mirror>
<id>maven2</id>
<name>repo2</name>
<mirrorOf>central</mirrorOf>
<url>http://repo2.maven.org/maven2</url>
</mirror>
<mirrors>
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
1.3远程仓库
只需要在repositories节点中配置即可
maven 配置 jdk1.8
<!-- 全局jdk配置,settings.xml -->
<profile>
<id>jdk18</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>
只需要在repositories节点中配置即可(略)
1.4 maven编译环境
可选的,在profiles节点中配置
<profile>
<id>jdk1.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>
maven构建项目的生命周期

| 阶段 | 处理 | 描述 |
|---|---|---|
| 验证 validate | 验证项目 | 验证项目是否正确且所有必须信息是可用的 |
| 编译 compile | 执行编译 | 源代码编译在此阶段完成 |
| 测试 Test | 测试 | 使用适当的单元测试框架(例如JUnit)运行测试。 |
| 包装 package | 打包 | 创建JAR/WAR包如在 pom.xml 中定义提及的包 |
| 检查 verify | 检查 | 对集成测试的结果进行检查,以保证质量达标 |
| 安装 install | 安装 | 安装打包的项目到本地仓库,以供其他项目使用 |
| 部署 deploy | 部署 | 拷贝最终的工程包到远程仓库中,以共享给其他开发人员和工程 |
3、eclipse集成maven


4、maven项目结构

pom.xml中依赖的信息
<dependency>
<!-- 跟包 -->
<groupId>mysql</groupId>
<!-- 项目名 -->
<artifactId>mysql-connector-java</artifactId>
<!-- 版本号 -->
<version>5.1.47</version>
<!-- 表示范围:
compile-默认的,参与编译、运行、测试、打包
test-测试,参与编译、运行、测试、不参与打包
provided-参与编译、运行、测试、不打包
runtime-参与运行、测试、打包
system-和provided相同 -->
<scope>compile</scope>
</dependency>

5、maven-web项目发布上线
5.1 本地打包
在自己本地使用eclipse工具的maven插件,把maven项目进行打包
项目 – 右键 – run as – maven install
使用上面的操作,即可将项目打包
5.2 war包拷贝到webapps
打包之后,需要再war包拷贝到tomcat的webapps目录中

5.3 startup.bat启动服务
在tomcat的bin目录中双击startup.bat启动服务
注意的是,需要电脑环境有jdk的环境变量配置

5.4 访问

6.maven多模块开发
项目分包:po dao servlet util.......
6.1 说明
在平时javaweb开发中为了方便后期的维护,我们一般会进行分层开发,最常见的分层:
po(模型层)、
dao(数据库访问层)、
service(业务逻辑层)、
web(表现层);
这样分层之后,各个层之间的职责会比较明确,后期维护相对容易
多模块项目结构:
system-parent:
pom.xml
system-po
pom.xml
system-service
pom.xml
system-web
pom-xml
以前的项目,每层都是一个包,现在每层都需要创建一个单独的模块,通过maven依赖关系来设置模块和模块之间的联系
注意:
po util dao service web 都需要去继承parent模块(父模块)
parent 模块打包的类型必须是pom
web模块打包的类型必须是war:
其余模块打包的类型就是jar:
模块间的依赖关系:
web -------po service
service---------po dao
dao-----------po
依赖性传递
依赖的传递性,比如dao依赖po模块,service依赖dao模块,那么service模块自动以来po模块
6.6 案例演示
整体项目结构

parent是父项目,新建时需要选择:maven project
其余模块的子项目,需要继承parent,新建时需要选择:maven module
6.6.1 maven-parent

6.6.2 maven-po

6.6.3 maven-dao

6.6.4 maven-service

6.6.5 maven-web

6.6.6 依赖关系
maven-po/pom.xml
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.2</version>
<scope>provided</scope>
</dependency>
maven-dao/pom.xml
<!-- dao模块依赖po模块 -->
<dependency>
<groupId>com.yujun.maven</groupId>
<artifactId>maven-po</artifactId>
<version>1.0</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
maven-service/pom.xml
<!-- service模块依赖于dao模块 -->
<dependency>
<groupId>com.yujun.maven</groupId>
<artifactId>maven-dao</artifactId>
<version>1.0</version>
</dependency>
maven-web/pom.xml
<!-- web模块依赖于service模块 -->
<dependency>
<groupId>com.yujun.maven</groupId>
<artifactId>maven-service</artifactId>
<version>1.0</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
6.6.7 案例代码
maven-po

maven-dao

maven-service

maven-web

maven-web/web.xml
<servlet>
<servlet-name>UserServlet</servlet-name>
<servlet-class>com.yujun.maven.web.servlet.UserServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>UserServlet</servlet-name>
<url-pattern>/userServlet</url-pattern>
</servlet-mapping>
6.6.8 运行



浙公网安备 33010602011771号