Maven学习笔记(二)——入门

目录

  • POM
  • 主代码
  • 测试代码
    • 更多作用
  • 其他构建方案
    • Make
    • Ant

POM

maven项目的核心就是pom.xml。POM(Project Object Model)定义了项目的基本信息,用于描述项目如何构建,声明项目依赖等。
样例如下:


<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0modelVersion>

    <groupId>org.examplegroupId>
    <artifactId>hello-worldartifactId>
    <version>1.0-SNAPSHOTversion>

project>

第一行是XML头,指定了该XML文档的版本和编码方式。project元素是所有pom.xml的根元素,它还声明了一些POM相关的命名空间及xsd元素,这些属性能够让第三方工具(如IDE里的XML编辑器)帮助我们快速编辑POM。
 
modelVersion指定了当前POM模型的版本,对于Maven 2和Maven 3来说,它只能是4.0.0。
 
groupId, artifactId, version定义了一个项目的基本坐标,在maven中,任何的jar, war, pom都是以它们作为区分的。
groupId定义了项目属于哪个组,这个组往往和项目存在的组织或公司存在关联。如果公司是mycom,项目是myapp,那么groupId就应该是com.mycom.myapp。
artifactId定义了当前Maven项目在组中的唯一id,一般与项目名或者模块名相同。
version指定了项目当前的版本,SNAPSHOT意为快照,说明该项目还处于开发中,是不稳定的版本。

主代码

项目主代码会被打包到最终的构建中(如jar包),而测试代码只在运行测试时用到,不会被打包。默认Maven假设项目主代码位于src/main/java中。
一般来说,项目中Java类的包都应该基于groupId和artifactId。
Maven的clean命令会清理输出target/,compile编译项目主代码至target/classes中。

测试代码

为了保证结构清晰,测试代码应与主代码分别位于独立的目录中。一般Maven项目中默认测试代码目录是src/test/java。

更多作用

  • 通过一组坐标可以找到任何一个Java类库
  • 管理原本分散在项目中各个角落的项目信息
  • 为Java开发者提供一个免费的中央仓库
  • 约定优于配置

其他构建方案

Make

Make是一个Makefile的脚本文件驱动,该文件使用make自己的语法格式。其基本组成部分包括一系列Rules,而每一条规则又包括Target,Prerequisite和Command。
 
但Make很难实现跨平台构建,其语法也不太友好。

Ant

Ant可以跨平台,它使用XML定义构建脚本,会更友好。
 
Ant和Make都是过程式的,开发者显式指定每一个目标以及完成该目标所要执行的任务。针对每一个项目都要重新编写这一过程。而Maven是声明式的,项目构建过程和过程各阶段所需工作都由插件实现,并且插件都是现成的,这很大程度上消除了重复。
 
Ant没有依赖管理,可以借助Ivy管理,而Maven自带。

你可能感兴趣的:(Maven学习笔记)