赞
踩
Maven是基于项目对象模型(POM project object model),可以通过一小段描述信息(配置)来管理项目的构建,报告和文档的软件项目管理工具
即是一款服务于Java平台的自动化构建工具。(构建:一些资源生成一个项目的过程)
要有JAVA_HOME环境变量
下载安装包 Download Apache Maven
配置Maven环境变量,MAVEN_HOME:D:\你的路径\apache-maven-3.8.4
, 和path: %MAVEN_HOME%\bin
mvn -v
输入命令行查看是否成功
目录结构(因为Maven要管理我们的项目): 例如项目 - hello
hello
:工程名
hello/src
:源码
hello/src/main
:存放主程序
hello/src/main/java
:程序包,和包java源文件
hello/src/main/resources
:框架和其他工具的配置文件
hello/src/test
:存放测试程序(这个下面也可以有java,resources目录)
hello/src/test/java
hello/src/test/resources
hello/pom.xml
:Maven工程核心配置文件
pom.xml
坐标:groupId
,artifactId
,version
packaging
标签,是打包后的后缀名,默认jar,可以不写
dependencies
标签,里面是dependency
标签,表示各种依赖
properties
标签:设置属性,也可以设置jdk版本
build
标签:maven构建项目时的配置信息,例如编译插件的jdk版本
<dependencies>
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.6</version>
</dependency>
</dependencies>
<properties> </properties>
<build> </build>
<groupId>com.sutong</groupId> <!-- 公司组织域名倒叙+项目名-->
<artifactId>testweb</artifactId> <!-- 模块名/项目名-->
<version>1.0-SNAPSHOT</version> <!-- 版本,SNAPSHOT代表快照版,不稳定版本-->
对应仓库路径:com/sutong/testweb/1.0-SNAPSHOT/com.sutong-testweb-1.0-SNAPSHOT.jar
Maven解析依赖会去本地仓库去找,找不到去中央仓库下载,都找不到报错。
如果是我们自己的工程执行install命令就会放到本地仓库。
依赖范围:
1)complie(对主程序和测试都有效,依赖也参与打包)
2)test(只测试有效,不参与打包)
3)provided(开发有,不参与打包,部署运行会去掉,服务器可以提供,例子:servlet-api.jar)
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope> // 依赖范围,不写默认是complie
</dependency>
仓库:资源存放的位置
生命周期:各个构建环节的执行顺序,清理,编译,测试,报告,打包,安装,部署等
插件/目标:执行maven构建的时候用的工具
继承
聚合
构建命令要进入pom.xml所在的目录下,输入命令。
执行命令需要插件时,Maven核心程序回去本地库去找,如果没有,则会去联网去中央仓库去下载(就下载一次)
本地仓库默认位置:C:\users\用户名\.m2\repository\
可以修改:apache-maven-3.8.4\conf\settings.xml\localRepository标签
中间改为自己的路径就行了:
<localRepository>D:\Learning\Java_Practice\JarLibraries\RepMaven</localRepository>
Idea使用前需要设置一下(本人的是2020.1版本)
<?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.sutong</groupId> <artifactId>test01-se</artifactId> <version>1.0-SNAPSHOT</version> <!-- 设置属性--> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>1.8</maven.compiler.source> <!-- 编译用的jdk版本--> <maven.compiler.target>1.8</maven.compiler.target> <!-- 应该运行在的版本--> </properties> <!-- 依赖--> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> </dependencies> <!-- 里面写不写都有的都行,idea帮我们加上可以方便我们修改而已--> <build>...</build> </project>
<?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.sutong</groupId> <artifactId>test02-web</artifactId> <version>1.0-SNAPSHOT</version> <packaging>war</packaging> <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> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api --> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> <scope>provided</scope> </dependency> <!-- https://mvnrepository.com/artifact/javax.servlet.jsp/jsp-api --> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId> <version>2.1</version> <scope>provided</scope> </dependency> </dependencies> </project>
Maven:常用设置
<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> 自定义属性(全局变量): 在properties中自定义标签声明变量(标签名就是变量名),在pom.xml文件的其他位置使用${变量名}来使用这个变量 一般用来定义依赖的版本号,当多处使用相同的版本号时,特别是spring依赖很多,类似把版本号提取出来,修改一处就行了 <properties> <spring-version>5.2.0</spring-version> </properties>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
资源插件,mybatis中可能会用到
<build> <resources> <resource> <directory>src/main/java</directory> <!-- 处理的目录--> <includes> <!-- 扩展名是properties,xml的文件拷贝到classes下--> <include>**/*.properties</include> <include>**/*.xml</include> </includes> <!-- false不启动过滤器,*.properties/*.xml已经起到过滤作用了--> <filtering>false</filtering> </resource> </resources> </build>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
默认没有使用resources的时候,maven执行编译代码时,会把src/main/resources目录中的文件拷贝到target/classes文件夹里,对于src/main/java目录下的非.java文件不处理,即不拷贝到target/classes文件夹里。
而我们程序需要把一些文件方法src/main/java下供java程序执行使用,而这时就需要告诉maven在编译时这些文件需要拷贝到target/classes对应的文件夹里,这时就需要build中加入resources
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。