maven简介
maven主要服务于java平台的项目构建,依赖管理和项目信息管理。
项目构建。通过maven我们可以更加快速的进行项目的构建。
依赖管理系统
使用groupId、artifactId、version组成的Coordination(坐标)唯一标识一个依赖进行对jar包的管理,我们只需要修改配置文件即可完成对jar包的更新和配置。
任何基于maven构建的项目自身也必须定义这三个属性。
<dependency>
<groupId>javax.servletgroupId>
<artifactId>javax.servlet-apiartifactId>
<version>3.1.0version>
dependency>
groupId:一般用于定义当前maven项目隶属的实际项目-公司名称。
artifactId:项目中的一个maven模块-项目名。
version:则是当前maven项目的版本。
maven统一jar包依赖,构建多模块项目,统一项目目录结构,一致的构建模型和插件机制。
maven的安装
jdk要求1.7以上
下载地址:https://maven.apache.org/download.html
配置环境变量
将maven解压,将maven的根目录配置到系统环境变量中的MAVEN_HOME中,将bin目录配置到path变量中
打开dos窗口,输入mvn -v显示maven版本就是配置成功。
maven的目录结构
*src**main****java
* * *resources
* *test****java
* *resources
*
*pom.xml
目录 | 作用 |
---|---|
/ | 存放pom.xml和所有子目录 |
src/mian/java | java源代码 |
src/main/resources | 项目资源 |
src/est/java | 测试java源代码 |
src/est/resources | 测试所使用的资源 |
修改settings.xml来配置maven
setting.xml文件有两个位置,一个是用户目录下单.m文件夹中的settings.xml,另一个是安装根目录下的conf文件夹中.
这里打开安装根目录下的conf文件夹;
更改本地仓库路径:
一般会使用m2/repository这条路径进行保存。
更改镜像:
这里使用阿里云的镜像,下载更新依赖时,更加快速。
<mirror>
<id>nexus-aliyunid>
<mirrorOf>centralmirrorOf>
<name>Nexus aliyunname>
<url>http://maven.aliyun.com/nexus/content/groups/publicurl>
mirror>
maven常用命令
maven命令格式如下:
mvn [plugin-name]:[goal-name]
执行plugin-name插件的goal-name命令目标。
命令 | 描述 |
---|---|
mvn -version | 显示当前maven版本 |
mvn clean | 清理项目生产的临时文件,一般是模块下的target目录 |
mvn compile | 编译源代码,一般是编译模块下的src/main/java目录,会生成一个target目录 |
mvn package | 项目打包工具,会在模块下的target目录生成jar或者war等文件 |
mvn test | 测试命令 |
mvn install | 将打包的jar或者war包放置到本地仓库中 |
mvn deploy | 将打包的文件发布到远程仓库 |
mvn site | 生成项目相关信息的网站 |
mvn eclipse:eclipse | 将项目转化为eclipse项目 |
mvn dependency:tree | 打印出项目的整个依赖树 |
mvn archetype:generate | 创建出maven的普通java项目 |
mvn tomcat7:run | 在tomcat容器中运行web应用 |
mvn jetty:run | 调用Jetty插件的Run目标在Jetty Servlet容器中启动web应用 |
执行mvn命令需要定位到项目中pom.xml所在的文件夹。
pom.xml详情
<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.testgroupId>
<artifactId>test01artifactId>
<version>1.0-SNAPSHOTversion>
<packaging>warpackaging>
<name>test01 Maven Webappname>
<url>http://www.example.comurl>
<properties>
<project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
<maven.compiler.source>11.0.11maven.compiler.source>
<maven.compiler.target>11.0.11maven.compiler.target>
properties>
<dependencies>
<dependency>
<groupId>junitgroupId>
<artifactId>junitartifactId>
<version>4.12 version>
<scope>testscope>
dependency>
dependencies>
<build>
<finalName>test01finalName>
<plugins>
<plugin>
<groupId>org.apache.tomcat.mavengroupId>
<artifactId>tomcat6-maven-pluginartifactId>
<version>2.2version>
plugin>
<plugin>
<groupId>org.apache.tomcat.mavengroupId>
<artifactId>tomcat7-maven-pluginartifactId>
<version>2.2version>
plugin>
plugins>
build>
project>
说明xml版本,与编码方式:
头信息复制用就行:
<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">
基本信息:
<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.testgroupId>
<artifactId>test01artifactId>
<version>1.0-SNAPSHOTversion>
<packaging>warpackaging>
<name>test01 Maven Webappname>
<url>http://www.example.comurl>
project>
project标签:放置整个项目信息。
modelVersion标签:声明项目描述符遵循哪一个POM模型版本。模型本身的版本很少改变,虽然如此,但它仍然是必不可少的,这是为了当Maven引入了新的特性或者其他模型变更的时候,确保稳定性。
packaging标签:打包类型。
name:项目名称。maven生产文档用。
url:项目主页的URL,maven生产文档用。
properties标签
<properties>
<project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
<maven.compiler.source>11.0.11maven.compiler.source>
<maven.compiler.target>11.0.11maven.compiler.target>
properties>
作为全局变量使用。通过${project.build.sourceEncoding}
来使用project.build.sourceEncoding的值,这里是UTF-8。project.build.sourceEncoding设置了maven项目的编码格式。
maven.compiler.source与maven.compiler.target是指定java编译的版本。
依赖关系层:
<dependencies>
<dependency>
<groupId>junitgroupId>
<artifactId>junitartifactId>
<version>4.12 version>
<scope>testscope>
dependency>
<dependency>
....
dependency>
...
dependencies>
dependencies标签:放置项目的所有依赖。
dependency标签:代表独立的一个依赖的项目。
scope标签:依赖项的适用范围。
build标签描述了如何编译及打包项目,具体的编译和打包工作是通过其中的plugin配置来实现的。
<build>
<finalName>test01finalName>
<plugins>
<plugin>
<groupId>org.apache.tomcat.mavengroupId>
<artifactId>tomcat6-maven-pluginartifactId>
<version>2.2version>
plugin>
<plugin>
<groupId>org.apache.tomcat.mavengroupId>
<artifactId>tomcat7-maven-pluginartifactId>
<version>2.2version>
plugin>
plugins>
build>
finalName:打包生成的文件的名字。
plugins:设置构建过程中需要的插件。
使用idea构建java项目
1.开始创建maven项目
2.设置jdk和maven项目模板
3.设置groupId,ArtifactId
4.设置settings文件路径,和仓库路径。
5.设置项目名称
之后等待项目创建,下载资源。
这里需要点击一下。
在pom.xml文件中修改一下jdk的版本,设置一下单元测试的版本
之后删除pluginManagement标签内的内容。
6.这边可以实现maven命令可视化操作。
创建后的项目目录有时候会不全,需要自己手动创建一下。创建好的目录,还需要自己手动设置一下。放置java源码就是Sources Root,放置资源文件就是Resources Root。
当然也可以在project stucture中设置。
7.编译项目
添加配置
点击+,选择maven。
1.设置命令的名称
2.是项目的目录
3.执行的命令
点击进行编译
之后生成target目录,存放编译后的文件。
8.打包项目
添加新的配置
步骤与之前相同。
点击运行。
在target目录下会生成对应的jar包或者war包。
这里可以自由切换maven命令或者配置新的maven命令
使用idea构建javaweb项目
1.创建maven项目
和之前类似,这里选择webapp的模板。
2.项目的结构
步骤和之前的差不多,这里看webapp项目的目录结构。
多了个webapp的文件夹,这里用来放置前端项目。
缺失的文件夹还是需要自己创建。
3.添加web部署的插件
在build标签中添加plugins标签。
Tomcat插件,在官网上可以下载标签。
https://tomcat.apache.org/
自己选择想要的版本,这里选择2.2
之后复制,添加到本地的pom.xml文件中去
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.tomcat.mavengroupId>
<artifactId>tomcat6-maven-pluginartifactId>
<version>2.2version>
plugin>
<plugin>
<groupId>org.apache.tomcat.mavengroupId>
<artifactId>tomcat7-maven-pluginartifactId>
<version>2.2version>
plugin>
plugins>
pluginManagement>
如果要添加自己想要使用的插件,一般官网上都会有对应的坐标标签进行复制。
记得还要添加servlet依赖。
<dependency>
<groupId>javax.servletgroupId>
<artifactId>javax.servlet-apiartifactId>
<version>3.0.1version>
dependency>