Maven 入门

184 阅读2分钟

日新计划6月更文 Day 30

  Apache Maven 是一个基于项目对象模型(Project Object Model,POM)概念的 Java 项目管理工具。Maven 可以对项目进行依赖管理、构建、发布等操作。

项目与POM

  Maven 项目的结构如下:

.
├── pom.xml                 // 项目 POM 配置文件
├── src            
│   ├── main
│   │   ├── java            // 项目源代码
│   │   ├── resources       // 项目资源文件
│   │   └── webapp
│   │       └── WEB-INF     // Web 应用目录
│   └── test
│       ├── java            // 测试代码
│       └── resources       // 测试资源文件
└── target                  // 构建输出
    ├── classes             // 编译输出
    └── test-classes        // 测试编译输出-

  POM 文件包含了项目的各种信息,如依赖、构建方式等,它是一个 XML文档,,其详细用法可供参考。

  1. SNAPSHOT表示尚处于开发中的版本,通常在项目开发过程中使用SNAPSHOT的依赖,投入生产环境时使用正式的Release依赖-

项目构建

  Maven 项目的生命周期如下:

阶段处理描述
清理 clean清理构建移除所有上一次构建生成的文件
验证 validate验证项目验证项目是否正确且所有必须信息是可用的
编译 compile执行编译源代码编译在此阶段完成
测试 test测试使用适当的单元测试框架(例如JUnit)运行测试。
包装 package打包创建JAR/WAR包如在 pom.xml 中定义提及的包
检查 verify检查对集成测试的结果进行检查,以保证质量达标
安装 install安装安装打包的项目到本地仓库,以供其他项目使用
构建项目文档站点 site构建文档生成项目的站点文档
部署 deploy部署拷贝最终的工程包到远程仓库中,以共享给其他开发人员和工程

  当执行某个步骤时,其先前的步骤也会依次执行,比如执行以下命令将依次执行package及以前的步骤:

mvn package

  Maven 使用原型 archetype 插件创建项目,构建一个简单项目的命令如下:

mvn archetype:generate "-DgroupId=com.companyname.bank" "-DartifactId=consumerBanking" "-DarchetypeArtifactId=maven-archetype-quickstart" "-DinteractiveMode=false"
  1. 一般构建项目靠 IDEA 等完成,谁学这玩意啊

仓库

  仓库用于存储依赖和发布构建好的产品,Maven 的仓库分为本地仓库、中央仓库和远程仓库,搜索依赖时按照以上顺序搜索。

  本地(local)仓库默认位于~/.m2/repository,在第一次运行 mvm 命令时创建。从中央仓库或远程仓库下载的依赖会储存在本地仓库。

  中央(center)仓库由 Maven 社区提供,包含了绝大多数开源 Java 构件、源码等。可通过 search.maven.org/#browse 搜索中央仓库中的依赖。

  远程(remote)仓库是团队或企业自己搭建的仓库。在 pom.xml<project>标签下进行如下配置:

<repositories>
    <repository>
        <id>companyname.lib1</id>
        <url>http://download.companyname.org/maven2/lib1</url>
    </repository>
    <repository>
        <id>companyname.lib2</id>
        <url>http://download.companyname.org/maven2/lib2</url>
    </repository>
</repositories>