一、idea中关联maven
- 配置全局的setting
- 配置关联idea路径
-
如果自己以后创建工程 使用默认配置 . 如果以后引入别人的maven工程 会使用别人的maven配置(自己再次修改)
-
打开工程后 再去查看一次 maven配置 保证 每一个空间下都是最新的配置
二、使用Maven骨架创建Javase工程(不配置也可以)
三、非Maven骨架创建Java se工程(建议)
如果是Java se工程可以不选骨架 默认就是Java se工程
四、POM文件介绍
project Object Model: 项目对象模型 , 实际上就是maven管理项目的配置 , 需要描述的内容都写在此文件当中
<?xml version="1.0" encoding="UTF-8"?>
<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.itheima</groupId>
<!--项目的模块名称-->
<artifactId>day02_maven_02_se_1</artifactId>
<!--版本-->
<version>1.0-SNAPSHOT</version>
<!--打包方式-->
<!--
packaging 打包方式
之后我们项目开发完以后 需要进行打包
se工程 打包出来的是jar包 , 更多的是作为工具jar被引入
ee工程 打包出来的是war包 , 扔到tomcat里运行
-->
<packaging>war</packaging>
<!--就是一个别名-->
<name>day02_maven_02_se_1</name>
<!-- FIXME change it to the project's website -->
<!--maven示例-->
<url>http://www.example.com</url>
<!--项目相关配置-->
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<!--<dependencies> 依赖 (多个依赖)-->
<dependencies>
<!--某个依赖-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
</dependencies>
<!--构建-->
<build>
<!--插件的管理-->
<pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
<!--多个插件-->
<plugins>
<!--一个一个的插件-->
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>3.1.0</version>
</plugin>
<!-- default lifecycle, jar packaging: see https://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging -->
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.2</version>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.1</version>
</plugin>
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<version>3.0.2</version>
</plugin>
<plugin>
<artifactId>maven-install-plugin</artifactId>
<version>2.5.2</version>
</plugin>
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.2</version>
</plugin>
<!-- site lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#site_Lifecycle -->
<plugin>
<artifactId>maven-site-plugin</artifactId>
<version>3.7.1</version>
</plugin>
<plugin>
<artifactId>maven-project-info-reports-plugin</artifactId>
<version>3.0.0</version>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>
五、idea中maven的生命周期和插件
按钮介绍
常用命令生命周期
生命周期: 从出生到死亡
项目的生命周期: 从项目开始创建到部署成功涉及到各个不同的节点
- clean : 清除 字节码文件(删除缓存) 没用
- compile: 编译 没用
- test: 批量执行携带@Test注解的测试程序 没用
- package:打包, 根据打包方式 jar/war生成不同的文件, jar包用来引入 , war用来发布
- install:安装,将这些工程放入本地仓库,以后可以通过坐标访问 , war工程没意义
- site(了解):站点 , maven会网站发布出去 并且生成一系列的文档信息
- deploy(了解):远程发布传输,私服使用以后将我们的jar包发布到私服服务器上(maven高级说明)
六、依赖管理--依赖范围
scope 域
<scope> 表示当前jar的作用域
test: 只能在测试的时候生效
compile :任何时候有效(重点,可省略) 99%的jar都是compile
runtime : 运行时候有效测试有效 编译无效 Class.forName("com.mysql.jdbc.Driver"); 编译不报错 但运行报错
provided :编译测试有效 运行无效 (运行的时候不需要此jar) servlet和jsp的jar包 最终我们的项目运行就在tomcat中 而tomcat已经携带了(servlet和jsp的jar包) 运行的时候不携带此jar包 由服务器提供此jar(防止jar包冲突)
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
七、Maven项目pom.xml爆红解决思路
在实际开发中,我们拉去别人的代码后,本地idea中的pom文件未被识别,或者pom文件出现爆红现象,下面给出一些常见的解决思路
- 检查项目是否被识别成为maven工程
- 检查自己的网络连接,电脑是否处于断网状态,无法从中央仓库拉取jar包
- 检查pom文件中的maven坐标是否完整,是否缺少版本号
- 清除idea缓存,重启idea,重新加载maven工程,重新拉取jar包
- 是否存在jar包冲突,排除依赖后重新拉取jar包