Maven使用
一、maven的安装
1.在使用maven前要先装Java
2.进入https://maven.apache.org/download.cgi即可完成maven下载
3.解压下载好的安装文件,解压后目录结构如下:
- bin:存放maven的命令
- boot:存放maven本身的引导程序,如类加载器等
- conf:存放maven的配置文件
- lib:存放maven本身运行所需的jar包
二、maven配置环境变量
1.由于Maven是由Java语言开发的,运行时依赖Java环境,所以要在计算机的环境变量中配置 JAVA_HOME
2.为了更方便的使用Maven命令,需要在环境变量中配置 MAVEN_HOME 和 Path
- MAVEN_HOME :maven解压后的文件夹
- Path :为%MAVEN_HOME%\bin
查看版本:
- 打开CMD命令窗口,输入 mvn -v ,显示Maven版本和Java版本,证明安装成功
三、maven工程概述
工程分类:
- POM工程:POM工程是逻辑工程,Maven并不会对该类型工程做打包处理,这些工程往往不包含具体的业务,而是用来整合其他工程的。
- JAR工程:普通Java工程,在打包时会将项目打成jar包。
- WAR工程:JAVA Web工程,在打包时会将项目打成war包。
内部结构:
- src:源代码
- target:编译生成的文件
- pom.xml:Maven工程配置文件,如坐标信息等。
项目结构:
- src/main/java:存放项目的java 文件
- src/main/resources:存放项目资源文件,如配置文件
- src/test/java:存放项目的测试文件
- src/test/resources:存放测试时的资源文件
四、maven工程创建
添加依赖
<!-- 本地仓库路径 -->
<localRepository>F://repository</localRepository>
<mirror>
<!-- 指定镜像ID -->
<id>nexus-aliyun</id>
<!-- 匹配中央仓库。-->
<mirrorOf>central</mirrorOf>
<!-- 指定镜像名称 -->
<name>Nexus aliyun</name>
<!-- 指定镜像路径 -->
<url>http://maven.aliyun.com/nexus/content/g
roups/public</url>
</mirror>
<profile>
<id>jdk11</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>11</jdk>
</activation>
<properties>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target> <maven.compiler.compilerVersion>11</maven.compiler.compilerVersion>
</properties>
</profile>
步骤1:设置
file->settings->maven
-
maven home directory -----本地maven目录
-
user settings file ----- config->settings.xml
-
local repository -----本地仓库
-
击File — New Projects Settings — Settings for New
Projects,再设置一遍Maven,使得新项目也可以使用同样的Maven配置
步骤2:创建
- 打开 idea,选择创建一个新工程
- 选择Maven工程,并使用maven的web工程模板
- 点击 Next 填写项目信息
- 手动添加src/main/java目录,此时该目录还不能写Java代码
- 将src/main/java目录设置为Java代码目录
步骤3:替换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">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>demo10</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<name>demo10 Maven Webapp</name>
<!-- FIXME change it to the project's website -->
<url>http://www.example.com</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<!-- jsp -->
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<scope>provided</scope><version>2.2</version>
</dependency>
<!-- servlet -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<scope>provided</scope> <version>3.0.1</version>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.9.0</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<finalName>demo10</finalName>
<pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
<plugins>
<!-- tomcat插件 -->
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.1</version>
<configuration>
<port>8888</port>
<path>/</path>
<uriEncoding>UTF-8</uriEncoding>
<server>tomcat7</server>
</configuration>
</plugin>
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>3.1.0</version>
</plugin>
<!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_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-war-plugin</artifactId>
<version>3.2.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>
</plugins>
</pluginManagement>
</build>
</project>
步骤四:运行
- 在add configuration 中搜索maven
- 使用命令tomcat7:run
五、聚合开发
定义:
我们可以把之前的项目按需拆分成一个个小项目,之后将小项目发布到仓库中,小项目之间也可以互相引用,并且在我们的项目中引入需要的小项目即可
-
创建一个Maven工程,创建时不需要选择模板
-
由于父工程是虚拟工程,不需要写逻辑代码,所以删除父工程的src目录。
-
由于父工程的依赖和插件子工程都能继承,可以将需要的依赖和插件都配置在父工程中
<groupId>com.zbzzs</groupId> <artifactId>maven_demo2</artifactId> <version>1.0-SNAPSHOT</version> <packaging>pom</packaging> <properties> <maven.compiler.source>11</maven.compiler.source> 8 <maven.compiler.target>11</maven.compiler.target> 9 </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId> <version>2.2</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servletapi</artifactId> <version>3.0.1</version> <scope>provided</scope> </dependency> <!-- jdbc驱动 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connectorjava</artifactId> <version>8.0.27</version> </dependency> <!-- jstl --> <dependency> <groupId>org.apache.taglibs</groupId> <artifactId>taglibs-standardspec</artifactId> <version>1.2.5</version> </dependency> <dependency> <groupId>org.apache.taglibs</groupId> <artifactId>taglibs-standardimpl</artifactId> <version>1.2.5</version> </dependency> </dependencies> <build> <plugins> <!-- tomcat插件 --> <plugin> <groupId>org.apache.tomcat.maven</groupId > <artifactId>tomcat7mavenplugin</artifactId> <version>2.1</version> <configuration> <port>8080</port> <path>/</path> <uriEncoding>UTF- 8</uriEncoding> <server>tomcat7</server> <systemProperties> <java.util.logging.SimpleFormatter.format> %1$tH:%1$tM:%1$tS %2$s%n%4$s: %5$s%6$s%n</java.util.logging.SimpleFormatter.format> </systemProperties> </configuration> </plugin> </plugins> </build>
-
创建子工程->一定选择父工程–>引入依赖
-
二级继承->
<dependencies> <dependency> <groupId>com.zbzzs</groupId> <artifactId>maven_demo2_dao</artifactId> <version>1.0-SNAPSHOT</version> </dependency> </dependencies>
-
下两种方式可以运行项目:
-
运行父工程
-
发布项目到仓库、运行子工程
小记
1.每次在对maven使用时,首先使用命令mvn clear;
命令 | 作用 |
---|---|
mvn clean | 清除编译的class文件,即删除target目录 |
mvn validate | 验证项目是否正确 |
mvn compile | 编译maven项目 |
mvn test | 编译maven项目及运行测试文件 |
mvn package | 编译maven项目及运行测试文件,并打包 |
mvn install | 编译maven项目及运行测试文件并打包,并发布到本地仓库 |
mvn deploy | 部署项目到远程仓库 |
mvn tomcat7:run | 使用tomcat运行项目 |
2在实际开发过程中,需要Maven依赖传递失效的解决方案为:在失效工程再次添加一遍依赖即可