Maven 快速入门

一、简介

Maven 是一个用于构建/管理任何基于Java项目的工具,其本身也是基于Java的 因此需要Java环境。其最初是为了简化 Jakarta Turbine 项目的构建而生。

其主要处理以下关心的领域:

二、安装

三、简单使用

四、主要模块/知识

  • 标准目录布局同时也是用 Maven 构建的默认值,比如哪里是java源码,测试目录在哪,输出目录是什么等等。
  • 以下有些描述暂时觉得模糊也没关系,一些部分并不常见 笔者也没用过,像 it / filters / site / assembly等,临时有大致概念即可。
  • 从官方示例看,java 源码包结构只要求和 groupId 相同即可,而不要求加一层 artifectId 的父包。但实际项目各种都有
maven-project
    ├───pom.xml  项目描述文件,定义在生命周期中所需的依赖和所需模块等等
    ├───README.txt  项目说明
    ├───NOTICE.txt  项目中使用第三方库的资料
    ├───LICENSE.txt  许可文件
    └───src  包含构建项目所需所有资料,site等等
        ├───main  最重要的目录,所有工件(artifect)都应出现在这里
        │   ├───java  工件Java源码
        │   ├───resources  配置及资源等文件
        │   ├───filters  包含在构建阶段将值注入到resources目录下配置属性的文件
        │   └───webapp  对于web应用,包含诸如JS/CSS/HTML等资源文件
        ├───test  所有测试代码及资源
        │   ├───java
        │   ├───resources
        │   └───filters
        ├───it  通常是用于 Maven Failsafe Plugin 的集成测试
        ├───site  使用 Maven Site Plugin(https://maven.apache.org/plugins/maven-site-plugin/index.html) 创建的site文档
        └───assembly  二进制打包装配配置,一般也不常用适用 Apache Maven Assembly Plugin
    └───target  用于容纳 build 的所有输出
  • 依赖(dependencies)、插件(plugins) 或 可被执行的目标(goal)、构建配置(profiles)等。
  • 以及关于项目的本身的信息,如 版本(version)、说明(description)、开发人员(developers)等

需注意的是:POM 中的 <groupid>:<artifactid>:<version></version></artifactid></groupid>构成了该工件的完全限定名
关于 POM、Super POM、最小POM等更多信息参考:

该配置文件可能存在两个位置:

  • 全局的设置:${maven.home}/conf/settings.xml
  • 用户级设置:${user.home}/.m2/settings.xml 【默认情况下可能不存在,可copy全局过来修改】

有三种内置构建生命周期(build lifecycle):默认(default)、清理(clean)、site
需注意:

  • validate:验证项目是否正确,所有必要信息是否提供
  • compile:编译项目源码
  • test:使用合适的单元测试框架测试编译后的源码。这些测试代码不要求被打包或部署
  • package:将编译后的代码打包为分发格式,例如 JAR
  • verify:运行继承测试的所有检查,以确保符合标准
  • install:将 package 安装到 Locale Repository(本地仓储),用作其他项目依赖
  • deploy:将最终 package 复制到 Remote Repository(远程仓储)

Original: https://www.cnblogs.com/simpleito/p/15118332.html
Author: SimpleIto
Title: Maven 快速入门

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/573688/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 秒杀系统设计-流程图

    // Redis中使用Lua脚本校验并减扣库存 StringBuilder script = new StringBuilder(); script.append("if…

    Java 2023年6月5日
    068
  • 开机启动VM WARE 某台虚拟机

    新建一个批处理,内容如下: -T 是类型, ws 是 vm ware workstation ,其它类型如:vm ware player. 开始,运行”shell:st…

    Java 2023年5月30日
    059
  • 【Java面试】概念性的问题怎么答,看完高手的回答一口气答出完整思路,Nosql的理解

    “谈谈你对Nosql的理解”如果你遇到这个问题的时候,找不到回答的思路脑子里面一片混乱,然后回答的时候吞吞吐吐。建议你看完整篇文章。大家好,我是Mic,一个…

    Java 2023年6月16日
    074
  • MySQL三:存储引擎

    转载~ 一、MySQL存储引擎概述 「数据库存储引擎是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除数据」。不同的存储引擎提供不同的存储机制、…

    Java 2023年6月8日
    081
  • 拿捏!隔离级别、幻读、Gap Lock、Next-Key Lock

    前面我写了很多Mysql相关的知识点,到这一篇稍微可以串一下了,从SQL执行流程、MVCC到锁,很多时候可能觉得对于间隙锁和Next-Key Lock好像已经理解了,但是好像又觉得…

    Java 2023年6月13日
    071
  • Java-基础

    Java-基本程序设计结构 简单的Java程序需要注意的基本区分大小写程序从main函数开始进行,类名与文件名要对应使用(.)去进行函数调用严格要求命名的规范化空白符会被Java编…

    Java 2023年6月5日
    060
  • .Net FW项目跑不起来且无Error信息

    阅文时长 | 0.17分钟字数统计 | 280.8字符主要内容 | 1、引言&背景 2、分析步骤 3、解决方案 4、声明与参考资料『.Net FW项目跑不起来且无Error…

    Java 2023年6月5日
    062
  • 一步步剖析spring bean生命周期

    关于spring bean的生命周期,是深入学习spring的基础,也是难点,本篇文章将采用代码+图文结论的方式来阐述spring bean的生命周期, 本篇文章将阐述清楚下图。 …

    Java 2023年5月30日
    089
  • 小学生四则运算–软件工程

    1 package sizeyunsuan; 2 3 import java.util.List; 4 import java.math.BigDecimal; 5 import …

    Java 2023年6月6日
    0104
  • 关于img 403 forbidden的一些思考

    网页中经常需要显示图片给用户看,对网站本身来说有的图片是从本地图片服务器来的,但是一旦数量多了以后,磁盘空间又是一个问题。 所以有时就希望显示其他网站的Image,直接把其他网站的…

    Java 2023年6月5日
    055
  • 【Unity Shader学习笔记】Unity基础纹理-单张纹理

    1 单张纹理 1.1 纹理 使用纹理映射(Texture Mapping)技术,我们把一张图片逐纹素(Texel)地控制模型的颜色。 美术人员建模时,会在建模软件中利用纹理展开技术…

    Java 2023年6月8日
    065
  • Vue 多环境配置

    settings.js config/index.js vue main.js Original: https://www.cnblogs.com/vipsoft/p/166966…

    Java 2023年6月14日
    066
  • [Java]判断Integer值相等最好不用==最好使用equals

    测试代码 结果输出: Integer为对象判断是否相等还是使用equals最靠谱,int为基本类型,判断是否相等就是可以使用== 其中的原因: 这是源码中的,也就是说cache中已…

    Java 2023年5月29日
    057
  • 动态代理实现

    package pattern; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Meth…

    Java 2023年6月9日
    070
  • 应用启动加速-并发初始化spring bean

    背景 随着需求的不断迭代,服务承载的内容越来越多,依赖越来越多,导致服务启动慢,从最开始的2min以内增长到5min,导致服务发布很慢,严重影响开发效率,以及线上问题的修复速度。所…

    Java 2023年6月8日
    072
  • Mysql索引-B+树

    分享概要 本次分享儒猿专栏 《从零开始带你成为 MySQL 实战优化高手》中Mysql索引的内容。本次会先从一个数据页中如何存储和查询数据开始,拓展到多个数据页中查询数据,分析无索…

    Java 2023年6月8日
    071
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球