Maven学习笔记3:在idea中使用Maven
Posted fau152
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Maven学习笔记3:在idea中使用Maven相关的知识,希望对你有一定的参考价值。
一、idea创建JavaSE项目
二、idea设置maven
idea中内置了maven ,一般不使用内置的,因为用内置修改maven的设置不方便。
使用自己安装的maven,需要覆盖idea中的默认的设置。让idea指定maven安装位置等信息。
Settings配置当前工程的设置
maven创建时,会联网下载模板文件,比较大,使用
-DarchetypeCatalog=internal,不用下载,创建maven项目比较快
配置所有项目(新建项目)的Maven
配置所有项目(新建项目)的默认本地maven仓库的位置
之后的设置和Settings一样
三、使用idea中的maven工具窗口
我们使用idea来进行单元测试,顺便介绍idea的一些使用技巧
每一个测试方法都是可以独立执行,也可以全部执行
来看一下Maven工具窗口
依赖这个窗口可以直观的看到各个依赖之间的关系
四、idea创建JavaWeb项目
创建成功之后我们看到,这里的很多文件夹都是要手动去添加的
之后再修改pom.xml的一些设置,整理完之后就是如下这样
配置tomcat服务器
添加tomcat的配置
之前不适用Maven的时候我们需要手动导入依赖,使用Maven之后,我们只需要再pom.xml文件中添加依赖的坐标即可
<!-- servlet依赖 -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
添加新的依赖之后,本地仓库中没有下载这个依赖,可能会报红色错误,这时刷新一下pom.xml就可以了
或者点击Maven工具窗口中的刷新也可
之后就可以正常进行JavaWeb项目的开发了
五、依赖管理
依赖范围
依赖范围使用<scope>
表示,他的值有compile、test、provided
表示依赖在maven构建项目的哪些阶段起作用
compile在编译以及编译之后的所有阶段都要用到
test只在测试阶段用得到
provided是提供者,不参与打包以及后面的步骤
六、Maven常用属性
maven属性设置
maven的属性设置在properties
标签中进行
<properties>
<!-- maven构建项目使用编码,防止中文乱码 -->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<!-- 编译代码使用的jdk版本 -->
<maven.compiler.source>1.8</maven.compiler.source>
<!-- 运行代码使用的jdk版本 -->
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
Maven的全局变量
自定义的属性:
- 在
<properties>
中通过自定义标签声明变量(标签名就是变量名) - 在pom.xml文件中的其他位置,使用
$标签名
使用变量的值
自定义全局变量一般是定义依赖的版本号,当项目中出现多个相同的版本号时,先使用全局变量定义,再使用$变量名
例子:
资源插件
- 默认没有使用resources的时候,maven执行编译代码时,会把src/main/resources目录中的文件拷贝到target/classes目录中。
对于src/main/java目录下的非java文件不处理,不拷贝到 target/classes目录中 - 我们的程序有需要把一些文件放在src/main/java目录中,当我在执行java程序时,
需要用到src/ main/java目录中的文件。
需要告诉maven 在mvnm compile src/main/java目录下的程序时,需要把文件一同拷贝到target/classes目录中。
此时就需要在<build>
中加入<resources>
.
<build>
<resources>
<resource>
<directory>src/main/java</directory><!--所在的目录-->
<includes><!--包括目录下的.properties ,.xml 文件都会扫描到-->
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<!--filtering选项 false 不启用过滤器,*.property已经起到过滤的作用了-->
<filtering>false</filtering>
</resource>
</resources>
</build>
不加以上资源插件,编译后的target是这样的
添加资源插件之后,编译之后,将里面的a.properties和b.xml文件拷贝过去了,但是c.txt没有拷贝
以上是关于Maven学习笔记3:在idea中使用Maven的主要内容,如果未能解决你的问题,请参考以下文章
❤️答应粉丝的Maven仓库学习笔记,今天它来了!一起来学习快速入门Maven❤️