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的基础功能,还有其他高级功能比如项目模板、文档生成、快照、依赖管理等功能,可能会等到有需求时再继续了解。

posted @ 2021-01-28 15:16  超载的巴赫朋克  阅读(244)  评论(0编辑  收藏  举报