Maven
1 Maven安装
1.1 下载
https://maven.apache.org/download.cgi
左边有Download或中间也有Download提示,点击
下拉,window系统选择下载后缀bin.zip的,一定是后缀bin.zip的,这是一个解压包
1.2 目录
Maven目录结构
bin:含有mvn运行的脚本
boot:含有类加载器框架
conf:含有setting.xml配置文件
lib:含有Maven运行时需要的Java类库
1.3 配置
1.MAVEN_HOME=apache-maven-3.6.3
2.PATH=;%MAVEN_HOME%\bin
检查安装配置是否正确
cmd mvn -v
如果出现以下信息则表示安装配置成功
1.4 修改私服
修改 conf/settings.xml中的标签
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
1.5 修改插件存储
<localRepository>E:\maven\download</localRepository>
1.6 修改Java版本
默认支持java8,如果用其他版本就需要修改
2 介绍
Maven是跨平台的项目管理工具,主要基于Java平台的项目构建
依赖管理
2.1 项目构建过程
项目构建过程包括:
[清理]->[编译]->[测试]->[打包]->[部署]
2.2 依赖管理
依赖指的是项目中jar文件之间的相互依赖,
依赖管理值得就是采用Maven来管理项目中需要的jar文件
Meaven管理的方式就是“自动下载项目中需要的jar文件”
统一管理jar之间的依赖关系
2.3 Maven的好处
目前的方式在开发中存在的问题
1)一个项目就是一个工程
如果项目非常大,就不适合继续采用package来划分模块,
最好是每一个模块对应一个工程
2)项目中需要的jar文件必须手动“复制”,“粘贴”到工程的
/WEB-INF/lib目录下,同样的jar文件重复出现在不同的项目工程中
浪费存储空间,让工程比较臃肿
借助Maven可以将jar文件仅仅保存在“仓库”中,在工程“引用”即可
3)jar文件需要提前准备好,到官网下载
不同技术的官网提供jar下载的形式是不同的
统一的规范将开源的jar文件存在Maven的中央仓库
3 构建Maven项目
3.1 项目的目录约定
项目名
|
|—src
| |—main
| | |—java 主程序的.java文件
| | |—resources 跟主程序相关的资源文件
| |—test
| |—java 测试程序的.java文件
| |—resource 资源文件
|
|—target 工程构建信息输出
|—pom.xml 工程信息
|
3.2 手动创建Maven工程
基本命令
1)mvn clean:清理
2)mvn compile:编译主程序
3)mvn test-compile:编译测试程序
4)mvn test:执行测试程序
5)mvn package:打包
6)mvn install:安装
注意:运行Maven命令时一定要在工程的pom.xml文件路径下
构建过程
1.清理,将生成的target目录删除
2.编译,将Java源程序生成class字节码问啊进
3.测试:自动测试,调用junit程序(以XxxTest命名)
4.报告:测试程序执行的结果
5.打包:web工程打成war包,java工程打成jar包
6.安装:Maven项目特有非概念,将jar包复制到“仓库”
7.部署:将web工程生成的war包复制到tomcat的webapps中
1.新建文件夹 maven-workspace,进入后输入以下语句
E:\maven-workspace> mvn archetype:generate -DarchetypeCatalog=internal
第一次会等待很长时间,因为正在下载安装jar包
完成后出现以下即可
也可以直接输入 mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4 -DinteractiveMode=false 构建
2.选择数字进行不同项目的创建
(java工程)
7: internal -> org.apache.maven.archetypes: maven-archetype-quickstart ( An archetype which contains a sample Maven project.)
(web工程)
10: internal -> org.apache.maven.archetypes: maven-archetype-webapp ( An archetype which contains a sample Maven Webapp project.)
3.接下来就是一些命名
Define value for property ‘groupId’: com.ds
Define value for property ‘artifactId’: maven01
Define value for property ‘version’ 1.0-SNAPSHOT: : 0.0.1-SNAPSHOT
Define value for property ‘package’ com.ds: : com.ds
Confirm properties configuration:
groupId: com.ds
artifactId: maven01
version: 0.0.1-SNAPSHOT
package: com.ds
Y: : y
最后显示 BUILD SUCCESS,就表示成功,并在目录下生成一个maven项目
可以直接简化
mvn archetype:generate -DgroupId=com.ds -DartifactId=maven1 -DarchetypeArtifactId=maven-archetype-quickstart -Dversion=0.01-SNAPSHOT
archetype:generate 表示创建项目
-DgroupId 项目包名: com.ds
-DartifactId 项目名称: maven1
-DarchetypeArtifactId 项目类型: maven-archetype-quickstart
-Dversion 版本号: 0.0.1-SNAPSHOT
-DinteractiveMode:false 表示前面参数都给了,就不用一个一个地输入了
4.运行
控制台输入java -cp target/maven1-0.0.1.jar com.ds.App
4 优化
4.1 仓库
本地仓库
当前系统上部署的仓库目录
为当前系统中的Maven工程服务
远程仓库
1.中央仓库:
架构Internet上,为全世界的Maven工程服务
https://repo.maven.apache.org/maven2
2.中央仓库镜像
为了分担中央仓库的流量,提升用户访问速度
3.私服:
搭建在局域网环境中,为局域网范围内的Maven工工程服务
仓库中保存的内容
1.Maven自身所需要的插件
2.第三方框架或工具的jar文件
3.我们自己开发的Maven工程对应的jar文件
修改本地仓库
1.默认本地仓库位置:~\.m2\repository
~表示当前用户的家目录
例如:C:\Users\DELL0\.m2\repository
2.指定本地仓库位置的配置信息文件
apache-maven-3.6.3\conf\settings.xml
3.在配置信息文件中,在settings标签内添加以下内容
<localRepository>E:/maven-repository</localRepository>
修改下载文职
补充:
镜像仓库修改
在配置信息文件中,在mirrors标签内添加以下内容
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
5 Eclipse设置Maven
5.1 Maven路径设置
菜单->Window->Preferences->Maven->Installations->
点击add,设置
c:\apache-maven-3.6.3
5.2 设置仓库
菜单->Window->Preferences->Maven->User Settings->
Global Settings 和 User Settings都使用
C:\apache-maven-3.6.3\conf\settings.xml
点击一下Reindex,确保 local Repository为:
E:/maven-repository
6 Eclipse建Maven项目
6.1 新建java项目
菜单->File->New->Other->Maven->Maven Project
点击next
选择 maven-archetype-quickstart
Group Id: 包名
Artifact Id: 项目名
然后点击Finish
6.2 添加jar包
双击pom.xml,点击dependencies
点击Add,弹出选择窗口
在中间 Enter GroupId, artifactId or sha1 prefix or pattern(*)… 这个地方输入mysql,下面就会出来被搜索到的mysql-connector-java
选中它,并点击ok
在App.java中测试
package com.ds;
/**
* Hello world!
*
*/
public class App {
public static void main(String[] args) {
try {
Class.forName("com.mysql.cj.jdbc.Driver");
System.out.println("加载驱动成功");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}
倘若在给maven项目添加jar中无法搜索到mysql jar包,那么可以按照如下行为操作一遍
菜单->Window->Show View->Other->Maven->Maven Repositories->Local Repository->Local Repository(右击)->Rebuild Index
6.3 新建web项目
菜单->File->New->Other->Maven->Maven Project->next
选中的是maven-archetype-webapp,点击next
点击finish,项目建完发现报错
右键项目->properties->Java Build Path->Libraries->Edit->Workspace default
JRE或Alternate JRE>Finish
此时会多一个test包
这个时候,还存在index.jsp会 报错的问题。 这个问题的解决办法是添加servlet.jar包。
通过pom.xml添加jar
7 修改JDK
7.1 局部
在工程的pom.xml文件中指定
<build>
<plugins>
<plugin>
<!-- https://mvnrepository.com/artifact/org.apache.maven.plugins/maven-compiler-plugin -->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
7.2 全局
在C:\apache-maven-3.6.3\conf\settings.xml文件中,在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>
8 父子项目
8.1 介绍
通过 maven 可以创建父子-聚合项目。 所谓的父子项目,即有一个父项目,有多个子项目。
这些子项目,在业务逻辑上,都归纳在这个父项目下,并且一般来说,都会有重复的jar包共享。
所以常用的做法会把重复的 jar 包都放在父项目下进行依赖,那么子项目就无需再去依赖这些重复的 jar 包
8.2 创建父项目
菜单->File->New->Other->maven-Maven Project->Next
选择 Create a simple project. 然后点击Next
填写项目信息
修改pom.xml:
将默认是 jar, 修改为pom
<packaging>pom</packaging>
增加 hutool jar 包的依赖,用于后来子项目里观察对其的调用
在这里插入代码片
修改 pom.xml 之后, 右键点击项目 -> Maven -> Update Project -> OK 进行更新。 否则项目会有红×
8.3 创建子项目
接下来创建maven 子项目。 maven 子项目有叫做模块 module.
为了能够在 parentMavenProject 的基础上创建其子项目,首先右键点击 parentMavenProject, 然后点击 New -> Other -> Maven -Maven Module -> Next
和父项目一样,这里也勾选 Craete a simple project ( 非必须 ),然后点 Next
点击finish即可完成
测试方法
1.先在parentMaven的pom.xml中添加MySQL的jar包
2.然后在childMaven编写测试代码
@Test
public void test1() {
try {
Class.forName("com.mysql.cj.jdbc.Driver");
System.out.println("加载驱动成功");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
运行,现在看到运行效果。
就表示子项目虽然没有依赖jar包,但是通过 父项目达到了依赖的效果
其实可以通过pom.xml文件进行查看
childMaven中 表示是引用父项目 parentMavenProject
<parent>
<groupId>com.ds</groupId>
<artifactId>ParentMaven</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
而父项目 parentMavenProject中表示其子模块是 childMavenProject,并且可以拥有多个
<modules>
<module>ChildMaven</module>
</modules>
观察项目目录结构,发现 childMaven 是位于 parentMaven 下的。 所以如果将来有 childMaven1, childMaven2, childMaven3 也会放在这个目录下,方便管理