三、Maven安装配置
1、下载
下载解压即可。在安装 Maven 之前,注意:需确保安装JDK
2、环境变量配置
-
MAVEN_HOME
maven的bin目录所在路径(不包含/bin)
-
Path
添加 %MAVEN_HOME%/bin
- maven升级:
下载新版本Maven解压,修改M2_HOME路径即可
3、Maven目录说明
- 说明
目录 说明 bin mvn运行脚本,配置java命令, mvn / mvnDebug boot 只包含一个plexus-classworlds jar包,Maven类加载器框架 conf settings.xml全局maven配置文件,【推荐】复制该文件至 /.m2/目录下(表示用户目录) lib Maven运行需要的Java类库,Maven jar包以及第三方依赖jar包 - ~/.m2/目录(默认本地仓库目录)
- Winodw:
C:\Users${user.home}\ .m2目录下 - Linux:
直接在根目录
- Winodw:
4、Maven常用配置
- 设置环境变量MAVEN_OPTS
通常设置MAVEN_OPTS的值为-Xms128m -Xmx512m,因为mvn命令实际执行java命令,项目较大时,使用Maven生成项目站点需要占用大量内存,如果没有该配置,容易得到java.lang.OutOfMemeryException。 - 配置用户settings.xml
用户可选择配置conf中的全局配置或.m2目录下的用户配置,推荐使用用户配置,避免影响系统中其他用户,并且配置用户配置便于maven升级,因为Maven升级后,conf下的全局配置需要重新设置,而.m2下的用户配置不变。 - 不使用IDE内嵌Maven
IDE集成的Maven,有些时候我们需要在终端上进行命令的操作,可能会造成版本不一致的问题。
5、settings.xml
settings.xml分类全局配置和用户配置,
全局配置直接修改安装目录下conf目录下的settings.xml文件即可
用户配置将settings.xml文件复制到.m2目录下即可
Maven的配置文件遵循就近原则;也就是说
User Setting
可以覆盖Global Setting
6、settings.xml文件内容
主要修改的地方有三个,修改本地仓库,国内镜像服务器,配置jdk的版本
- 修改本地仓库
<localRepository>绝对路径</localRepository> <!-- 例如 --> <localRepository>D:\tools\apache-maven\repository</localRepository>
- 配置阿里云镜像仓库。在mirrors标签里添加以下一段即可
<mirror> <!-- 仓库id--> <id>alimaven</id> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <!-- 1. 配置成* 就代表我们通过访问阿里云的maven仓库从而访问网路上所有的远程仓库, 2. 配置成central,就代表我们通过阿里云访问central仓库,及 http://central.maven.org/maven2, 3. 如果配置成repo1,就代表通过阿里云访问http://repo1.maven.org/maven2,阿里云和这些远程仓库之间必须可以镜像,存在一定的镜像关系。--> <mirrorOf>*</mirrorOf> <!-- 可选 --> <repository> <releases> <!-- 下载发布版构件 --> <enabled>true</enabled> <!-- Maven 从远程仓库更新的频率 never(从不) daily(每天一次,默认) always(每次构建都检查更新) interval:X(每隔X分钟检查一次,X为任意整数) --> <updatePolicy>never</updatePolicy> <!-- 检验文件的策略,如果校验失败: warn(默认):输出警告信息 fail: 构建失败 ignore: 忽略 --> <checksumPolicy>warn</checksumPolicy> </releases> <snapshots> <!-- 不从中央仓库下载快照版本的构件 --> <enabled>false</enabled> </snapshots> </repository> </mirror>
# 常用的仓库 1、http://maven.aliyun.com/nexus/content/groups/public/ 阿里云 (强力推荐) 2、http://www.sonatype.org/nexus/ 私服nexus工具使用 3、http://mvnrepository.com/ (推荐) 4、http://repo1.maven.org/maven2 5、http://repo2.maven.org/maven2/ 私服nexus工具使用 6、http://uk.maven.org/maven2/ 7、http://repository.jboss.org/nexus/content/groups/public 8、http://maven.oschina.net/content/groups/public/ 9、http://mirrors.ibiblio.org/maven2/ 10、http://maven.antelink.com/content/repositories/central/ 11、http://nexus.openkoala.org/nexus/content/groups/Koala-release/ 12、http://maven.tmatesoft.com/content/groups/public/
- 在profiles标签下加入以下一段话修改jdk版本。按自己所需配置即可
<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>
四、创建工程
1、使用Maven命令创建(了解)
- 命令
mvn org.apache.maven.plugins:maven-archetype-plugin:3.1.1:generate 简写方式 mvn archetype:generate
- 选择archetype(项目骨架)
执行插件之后会列出很多可用的Archetype列表,每一个Archetype前面都会对应有一个编号,同时命令行会提示一个默认的编号,其对应的Archetype为maven-archetype-quickstart创建普通java工程,
直接回车或选择而maven-archetype-webapp骨架则是用来创建一个JavaWeb Project,或输入指定编号回车
紧接着会Maven会提示输入要创建项目的groupId、artifactId、version以及包名package,确认后即可生成一个maven项目。
- 一行命令
mvn archetype:generate -DgroupId={project-packaging} -DartifactId={project-name}-DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
2、项目结构说明
- java工程
├── pom.xml 核心配置文件 └── src 源文件 ├── main 存放主程序 │ └── java 存放Java源代码代码 │ └── com.wener.hello 定义包名为项目组.项目名,所有java类都在该包下创建 │ └── App.java └── test 测试目录 └── java └── com.wener.hello └── AppTest.java 测试Java代码
- web工程
├── pom.xml └── src └── main ├── resources 存放框架的配置文件等 └── webapp ├── WEB-INF │ └── web.xml └── index.jsp
- 实战开发中完整的结构
├── pom.xml └── src 源文件 ├── main 存放主程序 │ ├── java 存放Java源代码代码 │ ├── resources 核心配置文件 │ └── webapp web应用的目录 │ ├── WEB-INF │ │ └── web.xml web应用程序入口配置 │ └── index.jsp └── test ├── java 测试目录 └── resources 存放测试框架的配置文件等
3、为什么要固定项目结构
- Maven 要负责项目的自动化构建,以编译为例,Maven 要想自动进行编译,那么它必须知道 Java 的源文件保存在哪里,这样约定之后,不用我们手动指定位置,Maven 能知道位置,从而帮我们完成自动编译。
- 遵循 约定—>配置--->编码。即能进行配置的不要去编码指定,能事先约定规则的不要去进行配置。这样既减轻了劳动力,也能防止出错。当然我们也可以手动去配置,但不推荐
4、其它常用maven命令(了解)
- mvn clean
说明: 清理项目生产的临时文件,一般是模块下的target目录 - mvn compile
前面我们按照maven约束好的文件路径建好项目后,加入pom.xml 在命令行输入mvn compile后,maven就会自动帮我们下载依赖jar,为代码生成字节码文件等。我们把这个过程称为 编译。 - mvn package
说明: 项目打包工具,会在模块下的target目录生成jar或war等文件 - mvn test
说明: 测试命令,或执行src/test/java/下junit的测试用例. - mvn install
说明: 模块安装命令 将打包的的jar/war文件复制到你的本地仓库中,供其他模块使用 -Dmaven.test.skip=true 跳过测试(同时会跳过test compile) - mvn deploy
说明: 发布命令 将打包的文件发布到远程参考,提供其他人员进行下载依赖 ,一般是发布到公司的私服
五、pom,xml
- 说明
Project Object Model 项目对象模型,Maven 的核心配置文件,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"> <!-- 模型版本。maven2 maven3 必须是这样写,固定格式--> <modelVersion>4.0.0</modelVersion> <!-- 公司或者组织的唯一标志,公司域名反写 必要--> <groupId>com.wener</groupId> <!-- 本项目的唯一ID,一个groupId下面可能多个项目,就是靠artifactId来区分的 必要--> <artifactId>demo</artifactId> <!-- 本项目目前所处的版本号 必要--> <version>1.0-SNAPSHOT</version> <!-- 打包的机制,如pom,jar, war, maven-plugin, ejb, ear, rar, par,默认为jar --> <packaging>jar</packaging> <!--声明了一个对用户更为友好的项目名称,非必须,推荐声明, --> <name>demo</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <!-- 依赖管理 --> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> </dependencies> </project>