学习内容:学习Maven(Day47)
1、Maven
2、通过IDEA创建maven项目
1、Maven
(1)Apache软件基金会提供的项目自动化构建和项目管理软件。基于项目对象模型(缩写:POM)概念,Maven利用 一个中央信息片断能管理一个项目的构建、报告和文档等步骤。
官方网站:http://maven.apache.org/
(2)下载并配置maven
1.下载地址:http://maven.apache.org/download.cgi
2.配置环境变量
MAVEN_HOME = maven根路径
PATH = %MAVEN_HOME%/bin
3.执行maven命令进行验证
mvn -v 显示maven版本信息
(3)maven工程结构
myapp (项目名称)
|-- pom.xml (配置文件)
-- src|
|-- main
| -- java
| -- com.mycompany.app
| -- App.java
|-- test
-- java
-- com.mycompany.app
-- AppTest.java
(4)maven的配置文件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">
<!--采用schema验证,此配置文件中的标签必须符合验证-->
<!--groupId + artifactId + version = 坐标-->
<modelVersion>4.0.0</modelVersion>
<groupId>com.mycompany.app</groupId> <!--公司项目的名称-->
<artifactId>myapp</artifactId> <!--模块名称-->
<version>0.0.1-SNAPSHOT</version> <!--版本号-->
<!--配置属性-->
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>10</maven.compiler.source> <!--安装的jdk版本-->
<maven.compiler.target>10</maven.compiler.target>
</properties>
</project>
(5)maven的dos指令
1.maven项目编译命令:mvn compile
首次编译会下载maven需要的组件,编译完成之后在项目中生成一个target目录,编译好的class文件会存入这里。
2.执行单元测试:mvn test
测试之前需要在pom.xml添加对junit的依赖(下载jar包)
<!--根据坐标在中央仓库http://mvnrepository.com/中查找jar包-->
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
</dependency>
</dependencies>
该指令测试的是Test目录下的Test.java。Test.java中的方法可以加上@Test注解来运行,不写main方法。
3.清除target:mvn clean
清除编译好的class文件。
4.打包:mvn package
将maven项目打成jar包放入target目录下,供别人使用。
5.发布到本地仓库中:mvn install
将maven项目打包后放入c:/用户/.m2/reporitory/com/mycompany/app/myapp/0.0.1-SNAPSHOT下,这是默认本地仓库地址。
下次再使用这个jar包可以在pom.xml添加依赖
<!--根据坐标在本地仓库中查找jar包-->
<dependencies>
<dependency>
<groupId>com.mycompany.app.myapp</groupId>
<artifactId>myapp</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>
6.使用Archetype快速创建项目:mvn archetype:generate
在输出的交互式命令中输入坐标即可创建;
或mvn archetype:generate -DgroupId=com.xixingit.pms -DartifactId=myapp2 -Dversion=1.0.0- SNAPSHOT
(6)修改本地仓库位置
默认本地仓库位置在操作系统的~/.m2文件夹中,修改方式如下:
1.取消maven/conf/settings.xml配置文件中的注释的该行代码: <localRepository>/path/to/local/repo</localRepository>
2.将其中的路径修改为自己希望的路径
<localRepository>J:/maven/repo</localRepository>
(7)maven查找依赖的顺序
1.从本地仓库中查找所需要的依赖
2.从私有仓库中查找所需要的依赖
3.从中央仓库(http://repo.maven.apache.org/)中查找所需要的依赖
私有仓库(私服):公司一般会有自己的私服存放需要用到的jar包。
修改单独项目的私服地址:
<repositories>
<repository>
<id>local</id>
<name>nexus_server</name>
<url>http://192.168.1.100:8088/nexus/content/groups/public/</url>
</repository>
</repositories>
修改全局私服地址: .m2/settings.xml中:
<mirror>
<id>mirrorId</id>
<mirrorOf>*</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://xxxxx</url>
</mirror>
(8)<scope>标签,一般加在依赖坐标的后面,代表依赖的使用范围,有四个值,默认值是compile:
• compile——编译(默认值,在编译、打包时使用)
• provided——编译和测试时使用的依赖,打包时不加入,例如servlet-api.jar
• runtime——运行时依赖,编译时不依赖,例如mysql.jar
• test——只有测试时依赖,编译和打包时不使用,例如junit.jar
(9)依赖传递和冲突
在添加依赖的时候,添加的依赖可能会依赖另一个jar包,这时会自动把依赖的依赖也添加上,这就是依赖的传递。但是有时依赖的传递会出现冲突,比如两个不同的依赖都依赖同一个jar包。
• 依赖级别相同时,在dependency前面的会使用
• 依赖级别不相同时,依赖路径短的会使用
• 依赖传递只会传递compile级别的包
这时可以把冲突的依赖排除掉。
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<version>2.2.31</version>
<exclusions> <!--派出冲突的依赖-->
<exclusion>
<groupId></groupId>
<artifactId></artifactId>
</exclusion>
<exclusion>
<groupId></groupId>
<artifactId></artifactId>
</exclusion>
</exclusions>
</dependency>
(10)其他配置
<properties>中可以配置各种依赖的版本号,坐标中需要写版本号时,可以直接用${ }来应用,这方便了后期对版本号的修改。
<properties>
<junit.version>4.12</junit.version>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
2、通过IDEA创建maven项目
(1)使用 IDEA 2021版创建Maven项目时发现没有模板,尝试在设置中配置MavenMaven设置和添加插件都不行,但是不选择模板创建一个Maven项目后再创建Maven时就出现了所有Maven骨架。
配置:-DarchetypeCatalog=internal,可以使idea创建maven项目时从本地加载骨架。
(2)创建Maven项目
(3)可以配置tomcat来运行Maven项目,也可以用Maven集成tomcat插件来运行
Maven集成tomcat插件:
<packaging>war</packaging>
<build>
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<configuration>
<!-- 指定端口 -->
<port>8080</port>
<!-- 请求路径 -->
<path>/myMaven</path>
</configuration>
</plugin>
</plugins>
</build>
点击Maven右上角的"m"标志,输入mvn tomcat7:run,回车,这样就启动了Maven集成的tomcat。
使用Maven集成的tomcat进行Debug