maven
maven本质是一个项目管理工具,将项目开发和管理过程抽象成一个项目对象模型(pom)
pom(project object model):项目对象模型
官网:maven.apache.org
有多个插件
Maven环境变量配置
依赖java,需要配置JAVA_HOME
设置MAVEN自身的运行环境,需要配置MAVEN_HOME
配置path
仓库
用于存储资源,包含各种jar包
分类:
本地仓库:自己电脑上存储资源的仓库,连接远程仓库获取资源
远程仓库:非本机电脑上的仓库,为本地仓库提供资源
中央仓库:Maven团队维护,存储所有资源的仓库
私服:部门/公司范围内存储资源的仓库,从中央仓库获取资源
私服作用:保存具有版权的资源,包含购买或自主研发的jar
中央仓库中的jar都是开源的,不能存储具有版权的资源
一定范围内共享资源,仅对内部开放,不对外共享
理论上本地仓库从中央仓库下载jar包,实际上本地从私服取,私服从中央仓库拿
坐标
必记: mvnrepository.com(导包)
配置本地仓库
修改jar包安装位置
maven安装位置 打开conf\setting.xml
改D:\maven\repository
文件内容原本被注释掉了,执行默认位置下载到了C盘里面
远程仓库
阿里云镜像仓库
同上位置
里面
<mirror>
<!-- 此镜像唯一标识符,用来区分不同的mirror元素 -->
<id>nexus-aliyun</id>
<!-- 对哪种仓库进行镜像,就是说准备代替哪个仓库 -->
<mirrorOf>central</mirrorOf>
<!-- 镜像名称 -->
<name>Nexus aliyun</name>
<!-- 镜像URL -->
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
pom.xml
<?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">
<!--pom的版本-->
<modelVersion>4.0.0</modelVersion>
<!-- 自己项目的信息 -->
<groupId>com.itheima</groupId>
<artifactId>project-java</artifactId>
<version>1.0</version>
<packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
dependency里面是项目需要的jar包
下载 cmd->mvn compile
mvn compile 编译
清理插件 mvn clean
测试 mvn test
mvn install把包放到仓库
打包 mvn package
mvn compile
到当前项目的目录下 打开cmd->mvn compile
出现错误
问题原因:
这是因为没有配置jdk版本号
解决办法一:
在pom.xml中添加
<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>
解决办法二:
修改maven配置
在setting中指定jdk版本
<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>
</profiles>
重新输入mvn compile
问题解决
mvn test
运行 失败 错误 跳过 用时
上面的Running xxx 每一条都显示运行失败错误等信息
下面的Results显示的是所有项目的测试数据总数
mvn package
打包只打包源码
mvn install
group id 决定了把包放在哪里
第一个Maven项目(手工制作)
创建工程
mvn archetype:generate
-DgroupId={project-packaging}
-DartifactId={project-name}
-DarchetypeArtifactId=maven-archetype-quickstart
-DinteractiveMode=false
创建java工程
mvn archetype:generate -DgroupId=com.itheima -DartifactId=java-project -
DarchetypeArtifactId=maven-archetype-quickstart -Dversion=0.0.1-snapshot -
DinteractiveMode=false
创建web工程
mvn archetype:generate -DgroupId=com.itheima -DartifactId=web-project -
DarchetypeArtifactId=maven-archetype-webapp -Dversion=0.0.1-snapshot -
DinteractiveMode=false
第一个Maven项目(IDEA生成)
配置Maven
idea对3.6.2及以上版本存在兼容性问题,为避免冲突,idea中安装使用3.6.1版本
更换低版本maven把高版本maven的conf->settings.xml转移到低版本中去替换掉
1、先建空项目
2、修改配置
3、点击Settings
搜索 Maven
改成自己下载的maven文件位置
修改mvn配置 点击override表示覆盖 然后选择文件夹对应位置的配置文件
3、准备模块部分
右击文件也可以改文件属性
建成后的maven工程
测试代码
Demo.java
package com.itheima;
public class Demo {
public String say(String name){
System.out.println("hello "+name);
return "hello "+name;
}
}
DemoTest.java
package com.itheima;
import org.junit.Assert;
import org.junit.Test;
public class DemoTest {
@Test
public void testSay(){
Demo d = new Demo();
String ret = d.say("itheima");
Assert.assertEquals("hello itheima",ret);
}
}
功能在这里启动
Web工程打包成war java工程打包成jar
<packaging>war</packaging>
Maven项目需要配置Tomcat服务器
pom书写的大概格式
<!-- 设置当前项目所以来的所有jar-->
<dependencies>
<!— 设置具体的依赖 -->
<dependency>
<!— 依赖所属群组id-->
<groupId>junit</groupId>
<!— 依赖所属项目id-->
<artifactId>junit</artifactId>
<!— 依赖版本号 -->
<version>4.12</version>
</dependency>
</dependencies>
依赖传递
在pom.xml中可以添加其他项目的pom.xml
这样可以实现依赖的传递
<dependency>
<groupId>com.itheima</groupId>
<artifactId>project03</artifactId>
<version>1.0-SNAPSHOR</version>
</dependency>
直接依赖:在当前项目中通过依赖配置建立的依赖关系
间接依赖:被资源的资源如果依赖其他资源,当前项目间接 依赖其他资源
依赖冲突问题
如果不想共享的话
被共享文件加上
<optional>true</optional>(可选依赖)
加在pom文件中
排除依赖
主动断开共享依赖的部分东西
有点像你收钱但是不收破损钱
把要排除的写在exclusions下的exclusion中
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<exclusions>
<exclusion>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-core</artifactId>
</exclusion>
</exclusions>
</dependency>
依赖范围
依赖的jar默认情况可以在任何地方使用,可以通过scop标签设定其作用范围
作用范围:
- 主程序范围有效(main文件夹范围内)
- 测试程序范围有效(test文件夹范围内)
- 是否参与打包(package指令范围内)
生命周期
plugins 表示插件
生命周期可以理解为几岁
插件就是几岁要干的事情