一、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包