Maven 是一个项目管理工具,它包含了一个项目对象模型 (POM:Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。
作用Maven 的依赖管理
Maven 的一个核心特性就是依赖管理。当我们涉及到多模块的项目(包含成百个模块或者子项目),管理依赖就变成 一项困难的任务。Maven 展示出了它对处理这种情形的高度控制。
项目的一键构建
我们的项目,往往都要经历编译、测试、运行、打包、安装 ,部署等一系列过程。
什么是构建?
指的是项目从编译、测试、运行、打包、安装 ,部署整个过程都交给 maven 进行管理,这个
过程称为构建。
一键构建指的是整个构建过程,使用 maven 一个命令可以轻松完成整个工作。
存放jar包的坐标文件
分类
- 本地仓库
用来存储从远程仓库或中央仓库下载的插件和 jar 包,项目使用一些插件或 jar 包,
优先从本地仓库查找
默认本地仓库位置在 ${user.dir}/.m2/repository,${user.dir}表示 windows 用户目录。
- 远程仓库
远程仓库:如果本地需要插件或者 jar 包,本地仓库没有,默认去远程仓库下载。 远程仓库可以在互联网内也可以在局域网内。
- 中央仓库
中央仓库 :在 maven 软件中内置一个远程仓库地址 http://repo1.maven.org/maven2 ,它是中 央仓库,服务于整个互联网,它是由 Maven 团队自己维护,里面存储了非常全的 jar 包,它包 含了世界上大部分流行的开源项目构件。
maven 的工作需要从仓库下载一些 jar 包,如下图所示,本地的项目 A、项目 B 等都会通过 maven 软件从远程仓库(可以理解为互联网上的仓库)下载 jar 包并存在本地仓库,本地仓库 就是本地文 件夹,当第二次需要此 jar 包时则不再从远程仓库下载,因为本地仓库已经存在了,可以将本地仓库 理解为缓存,有了本地仓库就不用每次从远程仓库下载了
仓库的示意图
修改Maven默认本地仓库地址
在maven项目目录下,打开cmd
在maven项目cmd输入命令
mvn compile
替换阿里云的镜像源
阿里云镜像源
<mirror>
<id>alimavenid>
<name>aliyun mavenname>
<url>http://maven.aliyun.com/nexus/content/groups/public/url>
<mirrorOf>centralmirrorOf>
mirror>
Maven工程
目录结构
作为一个 maven 工程,它的 src 目录和 pom.xml 是必备的。
进入 src 目录后,我们发现它里面的目录结构如下:
src/main/java —— 存放项目的.java 文件
src/main/resources —— 存放项目资源文件,如 spring, hibernate 配置文件
src/test/java —— 存放所有单元测试.java 文件,如 JUnit 测试类
src/test/resources —— 测试资源文件
target —— 项目输出位置,编译后的 class 文件会输出到此目录
pom.xml——maven 项目核心配置文件
注意:如果是普通的 java 项目,那么就没有 webapp 目录。
进入 maven 工程目录(当前目录有 pom.xml 文件),运行 tomcat:run 命令
根据上边的提示信息,通过浏览器访问:http://localhost:8080/maven-helloworld/
Maven命令 compilecompile 是 maven 工程的编译命令,作用是将 src/main/java 下的文件编译为 class 文件输出到 target 目录下。
首先进入项目的根目录,cmd 进入命令状态,执行 mvn compile,
testtest 是 maven 工程的测试命令 mvn test,会执行 src/test/java 下的单元测试类。 cmd 执行 mvn test 执行 src/test/java 下单元测试类,
cleanclean 是 maven 工程的清理命令,执行 clean 会删除 target 目录及内容。
packagepackage 是 maven 工程的打包命令,对于 java 工程执行 package 打成 jar 包,对于 web 工程打成 war 包。
installinstall 是 maven 工程的安装命令,执行 install 将 maven 打成 jar 包或 war 包发布到本地仓库
Maven指令的生命周期同一套生命周期,执行后边 *** 作,会自动执行前边所有的 *** 作
Clean Lifecycle 在进行真正的构建之前进行一些清理工作。
Default Lifecycle 构建的核心部分,编译,测试,打包,部署等等。
Site Lifecycle 生成项目报告,站点,发布站点。
去本地仓库去寻找jar包
idea的maven配置-
打开 File Settings 配置 maven
-
idea 中创建一个 maven 的 web 工程
-
选择 idea 提供好的 maven 的web 工程模板
3.1这里也可以选择不勾选工程模版创建项目,这时候会出现缺少一些文件夹
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0modelVersion>
<groupId>com.hansergroupId>
<artifactId>maven_java_1artifactId>
<version>1.0-SNAPSHOTversion>
<packaging>jarpackaging>
<properties>
<maven.compiler.source>11maven.compiler.source>
<maven.compiler.target>11maven.compiler.target>
properties>
project>
最终目录结构不完整,需要手动补齐
3.2 选择 idea 提供好的 maven 的web 工程模板
3.3 选择java项目的 骨架/工程模版
- 点击 Next 填写项目信息
5 点击 Next,此处不做改动
6 点击 Next 选择项目所在目录
7 点击 Finish 后开始创建工程,耐心等待,直到出现如下界面
8 手动添加 src/main/java 目录,如下图右键 main 文件夹 New Directory
9 创建一个新的文件夹命名为 java
10 点击 OK 后,在新的文件夹 java 上右键 Make Directory as Sources Root
要解决问题,就是要将 servlet-api-xxx.jar 包放进来,作为 maven 工程应当添加 servlet 的坐标,从而 导入它的 jar
Maven坐标 导入依赖的jar包在对应的Maven模块中,使用依赖导入对应的jar包
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0modelVersion>
<groupId>com.hansergroupId>
<artifactId>maven_java_2artifactId>
<version>1.0-SNAPSHOTversion>
<properties>
<maven.compiler.source>11maven.compiler.source>
<maven.compiler.target>11maven.compiler.target>
properties>
<dependencies>
<dependency>
<groupId>junitgroupId>
<artifactId>junitartifactId>
<version>4.11version>
<scope>testscope>
dependency>
dependencies>
project>
导入jar包后的 *** 作
直接打开 hello_maven 工程的 pom.xml 文件,再添加坐标
添加 jar 包的坐标时,还可以指定这个 jar 包将来的作用范围。
每个 maven 工程都需要定义本工程的坐标,坐标是 maven 对 jar 包的身份定义,比如:入门程序的
坐标定义如下:
<!--项目名称,定义为组织名+项目名,类似包名-->
<groupId>com.itheima</groupId>
<!-- 模块名称 -->
<artifactId>hello_maven</artifactId>
<!-- 当前项目版本号,snapshot 为快照版本即非正式版本,release 为正式发布版本 -->
<version>0.0.1-SNAPSHOT</version>
<packaging > :打包类型
jar:执行 package 会打成 jar 包
war:执行 package 会打成 war 包
pom :用于 maven 工程的继承,通常父工程设置为 pom
坐标的来源方式
添加依赖需要指定依赖 jar 包的坐标,但是很多情况我们是不知道 jar 包的的坐标,可以通过如下方式查询:
项目中添加的坐标 Maven插件 设置 jdk 编译版本本教程使用 jdk1.8,需要设置编译版本为 1.8,这里需要使用 maven 的插件来设置: 在 pom.xml 中加入:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
</build>
这里可以使用idea中的快捷键 alt + insert 导入依赖和插件
Maven web项目不使用骨架的方式导入jar包
1 设置打包方式为war
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.hanser</groupId>
<artifactId>maven_web_2</artifactId>
<version>1.0-SNAPSHOT</version>
<build>
<plugins>
<!--tomcat插件 启动当前web应用-->
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<port>80</port>
<path>/day23</path>
</configuration>
</plugin>
</plugins>
</build>
<packaging>war</packaging>
<properties>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
</properties>
</project>
可以使用run -> Edit Configuration 设置快捷运行tomcat插件的方式
配置的jar对那些环境是有效的
scope
<scope>provided</scope>
注意
如果容器中(Tomcat)带有jar包,在导入jar包的时候没有配置 provided 的时候 会造成jar包冲突,原因是因为Tomcat中也是存在jar包的 然后在打包的时候会把 导入的jar也打进去,这样就冲突了。
编写 servlet在 src/main/java 中创建 ServletTest
此时点击 idea 最右侧 Maven Projects, 就可以看到我们新添加的 tomcat7 插件 双击 tomcat7插件下 tomcat7:run 命令直接运行项目
也可以直接点击如图按钮,手动输入 tomc7:run 命令运行项目
点击后d出如下图窗口
重新执行 tomcat:run 命令重启工程,重启之前需手动停止 tomcat,否则报下边的错误:
点击如图所示选项
在d出窗口中填写如下信息
完成后先 Apply 再 OK 结束配置后,可以在主界面找到我们刚才配置的 *** 作名称
如上图红框选中的两个按钮,左侧是正常启动,右侧是 debug 启动。
总结 常用的 maven 命令常用 的 maven 命令包括: compile:编译 clean:清理 test:测试 package:打包 install:安装
坐标定义在 pom.xml 中定义坐标,内容包括:groupId、artifactId、version,详细内容如下:
<groupId>cn.itcast.mavengroupId>
<artifactId>maven-firstartifactId>
<version>0.0.1-SNAPSHOTversion>
<packaging > :打包类型
jar:执行 package 会打成 jar 包
war:执行 package 会打成 war 包
pom :用于 maven 工程的继承,通常父工程设置为 pom
pom 基本配置
pom.xml 是 Maven 项目的核心配置文件,位于每个工程的根目录,基本配置如下:
<project > :文件的根节点 .
<modelversion > : pom.xml 使用的对象模型版本
<groupId > :项目名称,一般写项目的域名
<artifactId > :模块名称,子项目名或模块名称
<version > :产品的版本号 .
<packaging > :打包类型,一般有 jar、war、pom 等
<name > :项目的显示名,常用于 Maven 生成的文档。
<description > :项目描述,常用于 Maven 生成的文档
<dependencies> :项目依赖构件配置,配置项目依赖构件的坐标
<build> :项目构建配置,配置编译、运行插件等
0.0.1-SNAPSHOT
:打包类型
jar:执行 package 会打成 jar 包
war:执行 package 会打成 war 包
pom :用于 maven 工程的继承,通常父工程设置为 pom
### pom 基本配置
```html
pom.xml 是 Maven 项目的核心配置文件,位于每个工程的根目录,基本配置如下:
:文件的根节点 .
: pom.xml 使用的对象模型版本
:项目名称,一般写项目的域名
:模块名称,子项目名或模块名称
:产品的版本号 .
:打包类型,一般有 jar、war、pom 等
:项目的显示名,常用于 Maven 生成的文档。
:项目描述,常用于 Maven 生成的文档
:项目依赖构件配置,配置项目依赖构件的坐标
:项目构建配置,配置编译、运行插件等
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)