一.简介
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%in
cmd:meven-version
三、使用
1.配置:
confsetting 中 <localRepository>C:UsersAdministratorDesktopliwenzhengapache-maven-3.5.0.m2 epository</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>