Java-Maven入门教程
Maven入门
主要参考:https://www.runoob.com/maven/maven-tutorial.html
什么是Maven
Maven 翻译为"专家"、"内行",是 Apache 下的一个纯 Java 开发的开源项目。基于项目对象模型(缩写:POM)概念,Maven利用一个中央信息片断能管理一个项目的构建、报告和文档等步骤。
Maven 是一个项目管理工具,可以对 Java 项目进行构建、依赖管理。最简单实用的功能就是对jar包的管理。
Maven环境配置
环境配置参考菜鸟教程中的环境配置。配置完成后,在控制台输入:
mvn -v
可以看到Maven版本,则安装成功。
Maven的基本工作单元:POM
POM( Project Object Model,项目对象模型 ) 是 Maven 工程的基本工作单元,是一个XML文件,包含了项目的基本信息,用于描述项目如何构建,声明项目依赖,等等。
执行任务或目标时,Maven 会在当前目录中查找 POM。它读取 POM,获取所需的配置信息,然后执行目标。POM 中可以指定以下配置:
- 项目依赖
- 插件
- 执行目标
- 项目构建 profile
- 项目版本
- 项目开发者列表
- 相关邮件列表信息
Maven的生命周期构建、配置文件构建、仓库、插件都是通过POM来管理的。
通过Maven创建一个Java项目
在vscode中新建一个Java项目,选择Maven
->quickStart
。Maven会开始自动下载一些依赖,但是由于墙的存在,下载可能会变得很慢,这里需要改一下镜像源。
在Maven的安装目录中找到conf文件夹下的setting.xml
,找到
<mirror>
<id>alimaven</id>
<mirrorOf>central</mirrorOf>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
</mirror>
注意不要加到注释里了,保存后即可。Maven将必要的项下载到本地仓库后,会有一些要求输入的项,包括:
Define value for property 'groupId': : cnblogs (可暂时先理解成类似package或namespace的名称,通常我们填写组织机构名称缩写)
Define value for property 'artifactId': : maven-hello-world (组件名称,可暂时理解成项目名称)
Define value for property 'version': 1.0-SNAPSHOT: : (版本号,直接回车,默认1.0-SNAPSHOT)
Define value for property 'package': cnblogs: : (打包后的jar文件名,相当于.net中项目最后生成的程序集dll名称)
输入完成后,Maven项目就创建好了。
Maven创建的项目结构目录
创建之后在vscode里打开Maven项目,可以看到目录结构如下:
观察一下POM,可以看到Maven已经引入了junit依赖作为测试工具:
其他的文件夹功能如下:
文件夹结构 | 描述 |
---|---|
consumerBanking | 包含 src 文件夹和 pom.xml |
src/main/java contains | java 代码文件在包结构下(com/companyName/bank)。 |
src/test/java contains | 测试代码文件在包结构下(com/companyName/bank)。 |
src/main/resources | 包含了 图片 / 属性 文件(这个文件夹需要自己创建)。 |
Maven构建项目并测试
Java的项目最后一般会打包成jar包。创建Maven项目后,其本身包括一个HelloWorld示例文件,可以直接构建项目:
mvn clean package
在这一句命令中,Maven执行了以下操作:
- 我们给了 maven 两个目标,首先清理目标目录(clean),然后打包项目构建的输出为 jar(package)文件。
- 打包好的 jar 文件可以在 consumerBanking\target 中获得,名称为 consumerBanking-1.0-SNAPSHOT.jar。
- 测试报告存放在 consumerBanking\target\surefire-reports 文件夹中。
- Maven 编译源码文件,以及测试源码文件。
- 接着 Maven 运行测试用例。
- 最后 Maven 创建项目包。
更简单的方法是,在vscode左侧的MAVEN窗口中,在项目上右键,就可以看到各类命令了,包括compile、test、clean、package等。编译完成后,尝试运行下面的命令来执行class文件:
PS D:\JavaSample\Maven\maven-hello-world\target\classes> java cnblogs.App
注意路径位置,要在target的classes文件夹下运行,否则可能会报错“错误: 找不到或无法加载主类 cnblogs.App”。Maven在创建项目时已经定义了包名(此处为cnblogs),所以需要在App前面加上cnblogs。
Maven引入外部依赖
Maven可以简化引入外部依赖的步骤,通过POM可以完成下载、导入的过程(虽然还是比Python麻烦的多)。以Jsoup作为例子,首先到Maven官网上找到Jsoup,选取一个版本后,可以看到依赖语句:
<!-- https://mvnrepository.com/artifact/org.jsoup/jsoup -->
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.13.1</version>
</dependency>
把这一段语句复制到项目的POM.xml中即可。vscode也提供了更简便的导包方式,在左侧的java project窗口中,找到Maven Dependencies,按右边的加号后,在弹出的窗口中输入包名,即可添加(推荐)。
结语
以上介绍了Maven的基础功能,还有其他高级功能比如项目模板、文档生成、快照、依赖管理等功能,可能会等到有需求时再继续了解。