Maven的基本使用
一、Maven的概述
Maven是项目管理工具,对软件项目提供构建与依赖管理
Maven是Apache下的Java开源项目
Maven为Java项目提供了统一的管理方式,已成为业界标准
maven概念模型
1.项目对象模型 (Project Object Model)
一个 maven 工程都有一个 pom.xml 文件,通过 pom.xml 文件定义项目的坐标、项目依赖、项目信息、插件目标等。
2.依赖管理系统(Dependency Management System)
通过 maven 的依赖管理对项目所依赖的 jar 包进行统一管理。
<!-- 依赖关系 -->
<dependencies>
<!-- 项目运行使用junit,所以项目依赖junit -->
<dependency>
<!-- junit的项目名称 -->
<groupId>junit</groupId>
<!-- junit的模块名称 -->
<artifactId>junit</artifactId>
<!-- junit版本 -->
<version>4.9</version>
<!-- 依赖范围:单元测试时使用junit -->
<scope>test</scope>
</dependency>
3.项目生命周期(Project Lifecycle)
使用 maven 完成项目的构建,项目构建包括:清理、编译、测试、打包、部署等过程,maven 将这些过程规范为一个生命周期。
maven通过执行简单命令即可实现上边生命周期的各各过程,比如执行 mvn compile 执行编译、执行 mvn clean 执行清理。
4.标准集合
maven将整个项目管理过程定义一组标准,比如:通过 maven 构建工程有标准的目录结构,有标准的生命周期阶段、依赖管理有标准的坐标定义等。
5.插件(plugin)目标(goal)
maven 管理项目生命周期过程都是基于插件完成的。
二、Maven的安装
1.maven下载
2.maven安装
将Maven解压到一个没有中文没有空格的路径下。
bin: maven的命令,如:mvn tomcat:run
boot: maven本身的引导程序,如:类加载器 plexus-classworlds-2.6.0.jar
conf: maven的配置文件,如:setting.xml
lib: maven本身运行所需jar 包,如:maven-core-3.6.3.jar
3.配置Mavn环境
注意:使用Maven需要本机安装并配置好JDK环境。
配置MAVEN_HOME ,变量值:maven 安装路径,(解压 maven压缩文件包所在的目录,最好不要有中文和空格)
4.验证是否安装成功
执行 mvn -v 命令检查 maven 是否安装成功
三、Maven的仓库
Maven仓库分类
maven在工作时,需要从仓库下载相关jar 包,当maven第一次使用某个Jar包时会从远程仓库下载这个Jar包并存入本地仓库(一个本地文件夹),在第二次需要使用这个Jar包时,maven则不再从远程仓库下载,而是直接从本地仓库取该jar包,因为第一次使用时已经将该Jar包存入本地仓库了,可以将本地仓库理解为缓存,有了本地仓库就不用每次从远程仓库下载了。
1.本地仓库
用来存储从远程仓库或中央仓库下载的插件和 jar 包,项目使用一些插件或 jar 包,优先从本地仓库查找。
默认本地仓库位置在 ${user.dir}/.m2/repository,${user.dir}表示windows 用户目录。
2.远程仓库
如果本地需要插件或者 jar 包,本地仓库没有,默认去远程仓库下载。远程仓库可以在互联网内也可以在局域网内,如:私服。
3.中央仓库
在 maven 软件中内置了一个远程仓库地址,如:http://repo1.maven.org/maven2 ,它是中央仓库,服务于整个互联网,它是由 Maven 团队维护,里面存储了非常全的 jar 包,它包含了世界上大部分流行的开源项目构件。
配置本地仓库
在 MAVE_HOME/conf/settings.xml 文件中配置本地仓库位置
全局配置与用户配置
maven 仓库地址、私服等配置信息需要在 setting.xml 文件中配置,分为全局配置和用户配置。
在 maven 安装目录下的有 conf/setting.xml 文件,此 setting.xml 文件用于 maven 的所有 project项目,它作为 maven 的全局配置。
如需要个性配置则需要在用户配置中设置,用户配置的 setting.xml 文件默认的位置在:${user.dir}/.m2/settings.xml 目录中,${user.dir} 指windows 中的用户目录。
maven会优先寻找用户配置,如果找到则以用户配置文件为准,否则使用全局配置文件。
其他配置
配置阿里云镜像
<mirrors>
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
</mirrors>
配置jdk1.8编译项目
<profiles>
<profile>
<id>jdk-1.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>
</profiles>
四、Maven工程的基本认识
项目的标准结构
一个 maven工程, src目录和 pom.xml 是必备的。
文件、目录 | 用途 |
---|---|
${basedir) | 根目录,用于保存pom.xml |
${basedir)/.idea | 开发工具生产的文件 |
${basedir)/src/main/java | Java源代码目录 |
$fbasedir/src/main/resources | 资源目录,保存配置文件、静态图片等 |
${basedir/src/test/java | 测试类的源代码 |
$fbasedir]/src/test/java/resources | 测试时需要使用的资源文件 |
basedir/target | 项目输出的目录,用于存储iar、war文件 |
$basedir/target/classes | 字节码(.class)的编译输出目录 |
$(basedir}/pom.xml | 项目(Project)对象(Object)模型(Model))文件 |
$(basedir}/src/main/webapp | 存放页面的目录(如果是普通java项目,就没有webapp目录) |
项目的运行
进入maven工程目录(当前目录有 pom.xml 文件),运行 mvn tomcat:run 命令。
五、Maven的常用命令
命令 | 用途 |
---|---|
mvn archetype:generate | 创建Maven工程结构 |
mvn compile | 编译源代码 |
mvn test | 执行测试用例 |
myn clean | 清除产生的项目 |
mvn package | 项目打包 |
mvn install | 安装至本地仓库 |
通过一系列maven命令来对maven工程进行编译、测试、运行、打包、安装、部署。
1.compile
compile是编译命令,执行mvn compile,将 src/main/java下的文件编译为class 文件输出到 target目录下。
2.test
test是测试命令,执行mvn test,会执行src/test/java下的单元测试类。
3.clean
clean是清理命令,执行mvn clean ,会删除target目录及内容。
4.package
package是打包命令,执行mvn package ,会对于java工程执行package打成 jar 包,对于web 工程打成war包。
5.install
install是安装命令,执行mvn install ,会将maven项目打成 jar 包或 war 包发布到本地仓库。
六、Maven指令的生命周期
maven 对项目构建过程分为三套相互独立的生命周期:
clean Lifecycle 在进行真正的构建之前进行一些清理工作。
Default Lifecycle 构建的核心部分,编译,测试,打包,部署等。
Site Lifecycle 生成项目报告,站点,发布站点。
七、在idea中使用Maven
1.idea的maven配置
选择本地 maven 安装目录,指定 maven 安装目录下conf文件夹中 settings 配置文件
2.创建maven工程
创建web工程
选择创建项目类型:maven,选择使用模板,选择使用哪种模板。
配置项目名称、存放位置以及项目信息
配置maven信息,或者修改项目配置信息
工程创建后,由于目录结构不完整,需要手动补齐
添加src/main/java目录,在mian目录上右键,选择New -->Directory,然后选择Java。
在新生成的文件夹 java 上右键选择Make Directory as-->Sources Root
创建Jar工程
3.创建一个Servlet
创建Servlet后,由于缺少依赖无法自动导包报错。需要在pom.mxl中添加servlet的坐标信息。
4.在pom.xml中添加坐标
pom基本配置
<project > :文件的根节点
<modelversion > : pom.xml 使用的对象模型版本
<groupId > :机构或者团体的英文,采用"逆向域名"形式书写。一般写项目的域名。
<artifactId > :模块名称,子项目名、模块名称、项目名称。说明其用途,例如:cms、oa.....
<version > :产品的版本号,一般采用"版本+单词"形式,例如:1.0.0.RELEASE
<packaging > :打包类型,一般有 jar、war、pom 等
<name > :项目的显示名,常用于 Maven 生成的文档
<description > :项目描述,常用于 Maven 生成的文档
<dependencies> :项目依赖构件配置,配置项目依赖构件的坐标
<build> :项目构建配置,配置编译、运行插件等。
添加servlet的坐标信息后,创建的Servlet类自动导入,报错信息消失。
添加 jar 包的坐标时,可以指定jar包的作用范围。
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
每个maven工程都需要定义本工程的坐标信息,坐标是maven对jar包的身份定义。
<!--项目名称,定义为组织名+项目名,类似包名-->
<groupId>cn.ybzy</groupId>
<!-- 模块名称 -->
<artifactId>maven_demo</artifactId>
<!-- 当前项目版本号,snapshot快照版本即非正式版本,release为正式发布版本 -->
<version>0.0.1-SNAPSHOT</version>
<!--<packaging > 打包类型;
jar:执行package会打成jar包;
war执行package会打成war包;
pom 用于maven工程的继承,通常父工程设置为pom-->
<packaging>war</packaging>
5.获取坐标的来源
添加依赖需要指定依赖 jar 包的坐标,很多情况是不知道 jar 包的坐标,一般通过从互联网仓库搜索查询,确定jar的坐标信息。
6.依赖范围
依赖是指:A 依赖 B,需要在 A 的 pom.xml 文件中添加 B 的坐标,添加坐标时需要指定依赖范围。
依赖范围:
compile:编译范围,指 A在编译时依赖 B,此范围为默认依赖范围。编译范围的依赖会用在编译、测试、运行,由于运行时需要所以编译范围的依赖会被打包。
provided:provided 依赖只有在当 JDK 或者一个容器已提供该依赖之后才使用, provided 依赖在编译和测试时需要,在运行时不需要,比如:servlet api 被 tomcat 容器提供。
runtime:runtime 依赖在运行和测试系统的时候需要,但在编译的时候不需要。比如:jdbc的驱动包。由于运行时需要所以 runtime 范围的依赖会被打包。
test:test 范围依赖 在编译和运行时都不需要,它们只有在测试编译和测试运行阶段可用,比如:junit。由于运行时不需要所以test范围依赖不会被打包。
system:system 范围依赖与 provided 类似,但是你必须显式的提供一个对于本地系统中 JAR文件的路径,需要指定 systemPath 磁盘路径,system依赖不推荐使用。
默认引入 的 jar 包 ——- compile 【默认范围 可以不写】(编译、测试、运行 都有效 )
servlet-api 、jsp-api ------- provided (编译、测试 有效, 运行时无效 防止和 tomcat 下 jar 冲突)
jdbc 驱动 jar 包 ---- runtime (测试、运行 有效 )
junit ----- test (测试有效)
依赖范围由强到弱的顺序是:compile>provided>runtime>test
7.设置jdk编译版本
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<target>1.8</target>
<source>1.8</source>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
</build>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
8.编写Servlet
public class MyServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws javax.servlet.ServletException, IOException {
doGet(request, response);
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws javax.servlet.ServletException, IOException {
request.getRequestDispatcher("/myJsp.jsp").forward(request, response);
}
}
9.web.xml中配置servlet访问路径
<web-app>
<display-name>Archetype Created Web Application</display-name>
<servlet>
<servlet-name>MyServlet</servlet-name>
<servlet-class>cn.ybzy.MyServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MyServlet</servlet-name>
<url-pattern>/myJsp</url-pattern>
</servlet-mapping>
</web-app>
10.编写Jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h2>this is my jsp!</h2>
</body>
</html>
11.添加tomcat7插件
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<port>8080</port>
<path>/</path>
</configuration>
</plugin>
添加tomcat7插件后,点击idea最右侧Maven,就可以看到新添加的tomcat7 插件,双击tomcat7:run命令可以直接运行项目。
击如图M按钮,手动输入tomc7:run命令或者选择相关命令来运行项目
浏览器访问:
12.maven运行debug调试
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/137088.html