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没有拷贝
本文作者:Free152
本文链接:https://www.cnblogs.com/free152/p/17217690.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步