IDEA配置Maven和使用
每日一句诗词
loading...
loading...
为什么使用Maven这样的构建工具【why】
一个项目就是一个工程
如果项目非常庞大,就不适合使用package来划分模块,最好是每一个模块对应一个工程,利于分工协作。借助于maven就可以将一个项目拆分成多个工程项目中使用jar包,需要“复制”、“粘贴”项目的libs中
同样的jar包重复的出现在不同的项目工程中,你需要做不停的复制粘贴的重复工作。借助于maven,可以将jar包保存在“仓库”中,不管在哪个项目只要使用引用即可就行。
- jar包需要的时候每次都要自己准备好或到官网下载
借助于maven我们可以使用统一的规范方式下载jar包,规范
- jar包版本不一致的风险
不同的项目在使用jar包的时候,有可能会导致各个项目的jar包版本不一致,导致未执行错误。借助于maven,所有的jar包都放在“仓库”中,所有的项目都使用仓库的一份jar包。
- 一个jar包依赖其他的jar包需要自己手动的加入到项目中
FileUpload组件->IO组件,commons-fileupload-1.3.jar依赖于commons-io-2.0.1.jar
极大的浪费了我们导入包的时间成本,也极大的增加了学习成本。借助于maven,它会自动的将依赖的jar包导入进来。
安装Maven
Maven 官方下载地址:http://maven.apache.org/download.cgi
Maven的历史发布请移步这个页面:https://maven.apache.org/docs/history.html
安装 Maven 3.3+ 需要 JDK 1.7 或者更高版本。
非常有必要考虑,不然会报错
Maven仓库
Maven 仓库有三种类型:
- 本地仓库(local):顾名思义就是本地本机放置构件的地方。Maven
从远程仓库下载下来的构件都存放在本地仓库中,项目可以从本地 Maven
仓库中获取自己所依赖的文件。 - 中央仓库(central):Maven 中央仓库是由 Maven社区提供的仓库,
其中包含了大量常用的库。中央仓库是 Maven 官方提供的,可通过
http://search.maven.org/ 来访问。 - 远程私服(remote):私服一般是指公司内部使用的仓库。运行 Maven 时,Maven 所需要的任何构件都是从本地仓库获取的,但是如果本地仓库没有,它就会尝试从远程仓库中下载构件到本地仓库。如果 Maven 无法连接到远程仓库,将无法正常构建项目。
本地仓库配置
- \apache-maven-3.6.0\conf\setting.xml路径下可以修改Maven配置
1
2
3
4
5
6
7
8<settings>
<!-- localRepository
| The path to the local repository maven will use to store artifacts.
| Default: ${user.home}/.m2/repository 本地仓库默认存放地址
| 修改localRespository可以设置本地仓库位置,下载的jar保存路径
-->
<localRepository>E:\maven\repository</localRepository>
</settings> - 设置Maven下载jar包阿里镜像网站
1
2
3
4
5
6<mirror>
<id>aliyun</id>
<name>aliyun Maven</name>
<mirrorOf>*</mirrorOf>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</mirror> - 配置JDK版本
1
2
3
4
5
6
7
8
9
10
11
12
13<profile>
<id>jdk-1.6</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.6</jdk>
</activation>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>16</maven.compiler.source>
<maven.compiler.target>16</maven.compiler.target>
<maven.compiler.compilerVersion>16</maven.compiler.compilerVersion>
</properties>
</profile>构建Maven项目
创建特定的目录结构
1
2
3
4
5
6
7
8
9根目录:工程名
|---src:源码
|---main:存放主程序
|---java:java源码文件
|---resource:存放框架的配置文件
|---test:存放测试程序
|---java:java源码文件
|---resource:存放框架的配置文件
|---pop.xml:maven的核心配置文件Maven 坐标组成
groupId
:当前Maven构件隶属的组织名。artifactId
:项目的唯一的标识符,实际对应项目的名称,就是项目根目录的名称。(必须)version
:当前版本。(必须)packaging
:打包方式,比如 jar,war… (必须)classifier
:classifier通常用于区分从同一POM构建的具有不同内容的构件。它是可选的,它可以是任意的字符串,附加在版本号之后。1
2
3
4
5
6
7<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
此配置下对应的路径为: /本地仓库/junit/junit/...jar - scope就是依赖的范围
- compile, 默认值,适用于所有阶段(开发、测试、部署、运行),本jar会一直存在所有阶段。
- provided, 只在开发、测试阶段使用,目的是不让Servlet容器和你本地仓库的jar包冲突
- runtime, 只在运行时使用,如JDBC驱动,适用运行和测试阶段。
- test, 只在测试时使用,用于编译和运行测试代码。不会随项目发布。
- system, 类似provided,需要显式提供包含依赖的jar,Maven不会在Repository中查找它。
依赖范围 | 编译时期 | 测试时期 | 打包 |
---|---|---|---|
compile | Y | Y | Y |
test | - | Y | - |
provided | Y | Y | - |
runtime | - | Y | Y |
system | Y | Y | - |
IDEA中设置tomcat插件
1 | <build> |