首页 > 其他分享 >8.Maven

8.Maven

时间:2023-04-19 10:35:24浏览次数:69  
标签:xml maven 项目 仓库 Maven itmayiedu

Maven

一、课程目标

Maven

构建Maven多模块功能

二、什么是 maven

Maven 是一个跨平台的项目管理工具,主要用于基于 java 平台的项目构建,依赖
管理。

如图为项目构建的过程。
解决的项目的问题:
1、如果有好几个项目,这好几个项目中,需要用到很多相同的 jar 包,
能不能只建立一个仓库来解决这个问题?
2、测试方法能不能全部运行呢?
3、怎么样把一个模块的功能放入到仓库中

三、 Maven 的安装与配置

Maven的安装

Jdk 的情况

Jdk必须1.6以上的版本

从官网下载 maven

从 http://maven.apache.org/官网上下载最新版本的 maven

设定 path 路径

把下载下来的 maven 解压缩,然后有一个 bin 文件夹,这是一个 bin 的文件夹的目录
F:\work\course\maven\maven\bin
把该目录追加到环境变量的 path 中。

利用命令行检查是否成功

有这个图,说明 maven 安装成功了。

建库

先打开路径

C:\Users\Think\.m2

把 settings.xml 文件复制到上述的路径中

F:\work\course\maven\apache-maven-3.0.5-bin\apache-maven-3.0.5\conf
有一个 settings.xml 文件,复制到 C:\Users\Think\.m2

修改 settings.xml 文件

<localRepository>F:/work/course/maven/mavenRepository/</localRepository>
指定仓库的路径
在这里 mavenRepository 就是仓库的路径

Maven的配置

说明:
bin 中存放可执行的二进制文件
conf 存放 settings.xml 文件
lib 运行 maven 所依赖的 jar 包

maven的约定

src/main/java 存放项目的 java 文件
src/main/resources 存放项目的资源文件,如 spring,hibernate 的配置文件
src/test/java 存放所有的测试的 java 文件
src/test/resources 存放测试用的资源文件
target 项目输出位置
pom.xml 文件

四、 maven 项目

hello 项目


在eclipse建立一个项目 Hello

创建一个包 cn.itmayiedu.maven ,并在该包下创建一个类

编写 Hello 类

在 在 src/test/java 中创建一个包 cn.itcast.maven ,创建
类 一个测试类 HelloTest

编写测试类

编辑 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>

说明:
project:表示一个工程
modelVersion:为版本号

用 maven 命令编译项目(mvn compile)

在命令行出现这样的形式,说明编译 OK 了。

target 文件夹的变化

可以看到编译后的文件全部放入到了 target 里。

clean

执行命令 mvn clean

说明执行成功了。


可以看到 target 的目录没有了。

五、 maven 的核心概念

项目对象模型

说明:
maven 根据 pom.xml 文件,把它转化成项目对象模型(POM),这个时候要解析依
赖关系,然后去相对应的 maven 库中查找到依赖的 jar 包。
在 clean,compile,test,package 等阶段都有相应的 Plug-in 来做这些事情。
而这些 plug-in 会产生一些中间产物。

插件的位置

在 maven 解压后的位置 F:\work\course\maven\maven 有一个 bin 文件夹,里面有
一个文件 m2.config 文件
set maven.home default ${user.home}/m2,其中该路径指明了仓库的存储位置

其中 settings.xml 文件中

这个说明了仓库中的位置。

这里的插件就是执行 maven 的各种命令所需要的插件。

maven 坐标

maven 坐标的主要组成

groupId:定义当前 maven 项目属于哪个项目
artifactId:定义实际项目中的某一个模块
version:定义当前项目的当前版本
packaging:定义当前项目的打包方式
根据这些坐标,在 maven 库中可以找到唯一的 jar 包

依赖管理

继承管理

创建一个项目 HelloParent
<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>HelloParent</artifactId>
<version>0.0.1</version>
<packaging>pom</packaging>
<dependencies>
<dependency>
<!-- 属于那些分组, 一般以公司名称名称开头 -->
<groupId>com.itmayiedu</groupId>
<!-- 一般为项目名称 -->
<artifactId>Hello</artifactId>
<version>0.0.1</version>
</dependency>
</dependencies>
</project>

Hellofriend、Hello 项目继承 HelloParent

仓库管理

可以根据 maven 坐标定义每一个 jar 包在仓库中的存储位置。
大致为:groupId/artifactId/version/artifactId-version.packaging

仓库的分类

本地仓库
~/.m2/repository/
每一个用户也可以拥有一个本地仓库
远程仓库
中央仓库:Maven 默认的远程仓库
http://repo1.maven.org/maven2
私服:是一种特殊的远程仓库,它是架设在局域网内的仓库
镜像:用来替代中央仓库,速度一般比中央仓库快

六、 maven 在 eclipse 中的应用

环境配置

七、使用 Maven 建立(聚合)多模块功能

目录结构
----- itmayiedu-parent----- 父工程
----- itmayiedu-service----- 业务 逻辑层
----- itmayiedu-web-----web 层

构建 itmayiedu- -

<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>itmayiedu-parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<dependencies>
<!-- https://mvnrepository.com/artifact/commons-lang/commons-
lang -->
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.6</version>
</dependency>
</dependencies>
<modules>
<module>../itmayiedu-service</module>
<module>../itmayiedu-web</module>
</modules>
</project>

八、 Maven 打包原理

一、Maven 中央存储库
当你建立一个 Maven 的项目,Maven 会检查你的 pom.xml 文件,以确定哪些
依赖下载。首先,Maven 将从本地资源库获得 Maven 的本地资源库依赖资源,
如 果 没 有 找 到 , 然 后 把 它 会 从 默 认 的 Maven 中 央 存 储
库 http://search.maven.org/ 查找下载。
在 Maven 中,当你声明的库不存在于本地存储库中,也没有不存在于 Maven 中
心储存库,该过程将停止并将错误消息输出到 Maven 控制台。
二、添加远程仓库
默认情况下,Maven 从 Maven 中央仓库下载所有依赖关系。但是,有些库丢失
在中央存储库,只有在 Java.net 或 JBoss 的储存库远程仓库中能找到。
现在,Maven 的依赖库查询顺序更改为:
在 Maven 本地资源库中搜索,如果没有找到,进入下一步,否则退出。
在 Maven 中央存储库搜索,如果没有找到,进入下一步,否则退出。
在 Maven 的远程存储库搜索,如果没有找到,提示错误信息,否则退出。

九、常用错误

错误原因①:
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 即可。

标签:xml,maven,项目,仓库,Maven,itmayiedu
From: https://www.cnblogs.com/salixleaf/p/17141430.html

相关文章

  • idea+maven配置scala环境报错
    (未解决)环境:Java1.7+scala2.10.6配置:创建maven工程,建立如下目录结构:pom.xml<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-in......
  • maven的pom文件中<relativePath/>的作用
    在<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.2.6.RELEASE</version> <relativePath/><!--lookupparentfromrepository-->&l......
  • maven : 无法将“maven”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查
    解决思路:1、打开CMD,测试Java、mvn等命令是否能够运行,如果不能运行那就是Java环境的问题,参考:Java初学教程进行配置;2、如果上一步没问题,右键IDEA,以管理员身份运行即可。......
  • Maven 打包跳过测试的 5 种方法,应有尽有,还有谁不会!?
    平时开发时的工作的话之主要负责写代码就行了,什么发布项目啊,好吧不是我们干的事。在我们的了解中打包发布项目应该不是一个困难的问题。对,最简单的方法就行使用直接使用maven插件打包,甚至我们都不需要知道他是怎么实现的,插件能帮我们将项目打包为一个jar包,然后使用java-jarxx.j......
  • 升级Java17后Maven中使用bouncycastle加解密遇到JCE cannot authenticate the provide
    网上找了很多办法,逐一试过之后,发现有效的方式为修改打包方式:<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-jar-plugin</artifactId><version&......
  • maven项目转gradle项目
    进入到maven项目根目录后,输入命令:gradleinit--info--typepom 等待几秒后出现如下选择构建的语言,选1Groovy: 等待中......(我这没有提示)如果提示是否使用新的api默认不使用(回车即可): gradle项目构建完成: ......
  • [Maven] The JAVA_HOME environment variable is not definded...... 配置错误日志
    ...因为是第一次配置Maven,所以出现了很多错误所以列举一二。出现找不到Java_Home环境变量的时候,如图。这个时候可能是,你的Java_Home路径配置错误,在Java_Home路径中,将\bin删掉,在path后面跟\bin,如%java_home%\bin,而不是直接在java_home中直接写死。......
  • Maven 仓库地址
    <?xmlversion="1.0"encoding="UTF-8"?><settingsxmlns="http://maven.apache.org/SETTINGS/1.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://mave......
  • java maven-plugin-shade插件 Maven生成的jar运行出现“没有主清单属性”
    命令窗口运行jar,提示“没有主清单属性”  2.1分析问题在打包构建的jar目录内,可以看到有一个MANIFEST.MF文件,如图所示:该文件就是jar运行时要查找的清单目录,其中主清单数据,就是我们要运行的主类(函数入口main所在的类);提示缺少主清单属性,就是文件中少了主清单属性如下所示:正......
  • java——maven——分模块——资源加载属性值
    第一步:   第二步:    第三步:                       ......