maven好处:
1.管理jar包
2.解决冲突
3、远程 、本地、私服仓库 方便使用
jar包打包过程:
一、Maven中央存储库
当你建立一个 Maven 的项目,Maven 会检查你的 pom.xml 文件,以确定哪些依赖下载。首先,Maven 将从本地资源库获得 Maven 的本地资源库依赖资源,如果没有找到,然后把它会从默认的 Maven 中央存储库 http://search.maven.org/ 查找下载。
在Maven中,当你声明的库不存在于本地存储库中,也没有不存在于Maven中心储存库,该过程将停止并将错误消息输出到 Maven 控制台。
二、添加远程仓库
默认情况下,Maven从Maven中央仓库下载所有依赖关系。但是,有些库丢失在中央存储库,只有在Java.net或JBoss的储存库远程仓库中能找到。
现在,Maven的依赖库查询顺序更改为:
在 Maven 本地资源库中搜索,如果没有找到,进入下一步,否则退出。
在 Maven 中央存储库搜索,如果没有找到,进入下一步,否则退出。
在Maven的远程存储库搜索,如果没有找到,提示错误信息,否则退出。
Maven常用命令
编译项目
mvn compile
打包发布
mvn package
清理(删除target目录下编译内容)
mvn clean
mvn install 打包后将其安装在本地仓库
编辑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.0</modelVersion>
<groupId>com.itmayiedu</groupId>
<artifactId>Hello</artifactId>
<version>1.0</version>
</project>
groupId | 这是项目组的编号,这在组织或项目中通常是独一无二的。 例如,每特教育com.itmayiedu拥有所有蚂蚁课堂相关项目。 |
artifactId | 这是项目的ID。这通常是项目的名称。 例如,consumer-banking。 除了groupId之外,artifactId还定义了artifact在存储库中的位置。 |
version | 这是项目的版本。与groupId一起使用,artifact在存储库中用于将版本彼此分离。 |
使用Maven建立(聚合)多模块功能
搭建一个多模块的web,
parent的packging 是pom的,web的packing是war的 即可
其他两个继承即可。
Maven依赖冲突解决
Web工程依赖两个不同的,maven项目,依赖同一个artifactId但是版本不同,这时候就会产生mavenjar依赖冲突问题
<dependencies>
<dependency>
<groupId>com.itmayiedu</groupId>
<artifactId>itmayiedu-service</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.itmayiedu</groupId>
<artifactId>itmayiedu-entity</artifactId>
<version>0.0.1-SNAPSHOT</version>
<exclusions>
<exclusion>
<artifactId>commons-logging</artifactId>
<groupId>commons-logging</groupId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
常用错误
错误原因①:
pom.xml报错:web.xml is missing and <failOnMissingWebXml> is set to true
解决办法:
出现这个错误的原因是Maven不支持缺少web.xml的web项目
添加Web模块,对项目右键->Java EE Tools->Generate Deployment Descriptor Stub,这样就在
src\main\webapp下面生成了WEB-INF文件夹和web.xml,问题解决.
错误原因②
'parent.relativePath' and 'parent.relativePath' points at wrong local POM @ line 4, column 10
解决办法
在应用parent工程中加上<relativePath>../itmayiedu-parent/pom.xml</relativePath>
<parent>
<groupId>com.itmayiedu</groupId>
<artifactId>itmayiedu-parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
<relativePath>../itmayiedu-parent/pom.xml</relativePath>
</parent>
错误原因③
No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?
解决办法 更换为自己本地的jdk即可。