美文网首页
Maven: 优秀的构建和依赖管理工具

Maven: 优秀的构建和依赖管理工具

作者: 字母数字或汉字 | 来源:发表于2016-10-02 01:47 被阅读328次

每天我们的编程工作都不只是编写正确的代码,我们很大一部分时间消耗在了进行编译、单元测试、生成文档、打包、部署等等操作上面,这些微不足道的事情,占据了时间,消磨了激情。

Maven 很好地帮助我们从重复而繁琐的构建过程中解放出来,让这个过程自动化程度极大地提高了,让我们专注于编程与结果。

安装

其实安装很简单,但你将遇到的最大难点是:不同平台下如何配置“环境变量”。

这里附上官方文档:Homepage Download Install

我在 Windows 下遇到了一个问题,这个问题在 环境变量的引用顺序问题导致无效 这篇文章中得到了解决。

如果还有问题可以参阅 Maven的安装、配置及使用入门 这里的图文教程。

POM 文件

构建系统的配置文件,如同 make 的 Makefile、Ant 的 build.xml,Maven 的配置文件叫 pom.xml。

Project Object Model,项目对象模型。

一个简单的例子如下:

<?xml version="1.0" encoding="UTF-8"?>
<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.0</modelVersion>

    <groupId>demo</groupId>
    <artifactId>helloworld</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>pom</packaging>

    <properties></properties>
    <dependencies></dependencies>
    <build>
        <plugins></plugins>
    </build>

</project>

groupId 定义了项目属于哪个组,比如 junitorg.springframework
artifactId 定义了一个项目在组中的唯一 ID,比如 junitspring-core
version 版本。

编写代码

默认 src/main/java 为项目主代码目录。src/main/resources 为项目主资源目录。这些代码将被打包到最终的构件中(如 jar 包)。

编译

在终端中执行命令:

$ mvn clean compile

便会自动运行以下插件和其执行目标:

  • clean:clean
  • resources:resources
  • compiler:compile

使用最新的 JDK

在我使用的 Maven 3 中,执行 compiler:compilemaven-compiler-plugin 这个核心编译插件默认使用 JDK 1.5,然而这并不是我们想要的,通过添加以下属性可更新至 JDK 1.8。

<properties>
    <java.version>1.8</java.version>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
</properties>

单元测试

在 Java 世界,JUnit 是单元测试的事实标准,我们需添加 JUnit 依赖。

<dependency>
    <groupId>junit</groupId>  
    <artifactId>junit</artifactId>  
    <version>4.12</version>  
    <scope>test</scope>  
</dependency>

默认 src/test/main 为测试代码目录。src/test/resources 为测试资源目录。这些将不会被打包到构件中。

编写测试用例:

import org.junit.Assert;
import org.junit.Test;

public class MyTest {

    @Test
    public void test() {
        Assert.assertEquals(2, 1+1);
    }
}

运行测试用例:

$ mvn clean test

在 Maven 执行 test 之前,它会先自动执行项目主资源处理,主代码编译,测试资源处理,测试代码编译等工作,具体可参考 Maven 的生命周期。

打包

$ mvn clean package

这将生成 target/${artifact}-${version}.jar 包。

安装

$ mvn clean install

将构建项目生成的 jar 包安装到 Maven 的本地仓库,供其他项目使用。

该步骤是可选的,按需使用。

运行

你可以通过指定类名运行 main 函数:

$ java -cp demo.helloworld.Application -jar target/helloworld-1.0-SNAPSHOT.jar

或者在 pom.xml 里写一条配置:

<properties>
    <start-class>demo.helloworld.Application</start-class>
</properties>

现在 jar 包的 META-INF/MANIFEST.MF 里就有了主类信息:

Main-Class: demo.helloworld.Application

可以直接运行:

$ java -jar target/helloworld-1.0-SNAPSHOT.jar

IntelliJ IDEA

以 IDEA 为 IDE 使用 Maven 可以获得非常愉快的体验。

IDEA 自带了 Maven 3,但如果本地安装了更高版本的 Maven,可以在 IDEA 的“设置”中选择它,最好加至“默认设置”里,避免每次都重复劳动。

编写完 pom.xml 后,在 IDEA 的 Project 里右键点击它,选 Maven -> Reimport 自动加载依赖,更新配置。

TODO

  • archetype
  • plugin
  • POM: module & parent

相关文章

  • 项目管理工具maven

    介绍 Maven 是一个项目管理工具,可以对 Java 项目进行构建、依赖管理。Maven 也可被用于构建和管理各...

  • Maven: 优秀的构建和依赖管理工具

    每天我们的编程工作都不只是编写正确的代码,我们很大一部分时间消耗在了进行编译、单元测试、生成文档、打包、部署等等操...

  • 项目管理工具:Maven

    Maven是什么,作用是什么? Maven是项目管理工具,主要有两大作用:项目构建和依赖管理。项目构建就是项目编译...

  • Maven 1

    1 什么是Maven Maven是java平台下的一款项目构建和依赖管理的自动化管理工具。 项目构建:将我们的源代...

  • 【代码审计】Maven 基础知识

    0x00 前言 Maven 是一个项目构建和管理工具,利用它可以对 JAVA 项目进行构建和管理。 Maven 采...

  • Maven+Spring MVC 4 +Mybatis学习(-)

    Maven: 1. What is Maven: Maven 简单的说就是一个项目管理工具。它可以用来构建和管理任...

  • Linux下Maven安装及环境变量配置

    Maven是一个依赖管理工具,构建项目的时候Maven会自动下载并构建所需的依赖。1、离线安装Maven下载地址:...

  • Maven 依赖冲突

    Maven 依赖冲突 1. 什么是依赖冲突 Maven是个很好用的依赖管理工具,但是再好的东西也不是完美的。Mav...

  • 碰到Maven依赖冲突,想砸电脑?这个工具必须了解一下

    1、何为依赖冲突 Maven是个很好用的依赖管理工具,但是再好的东西也不是完美的。Maven的依赖机制会导致Jar...

  • 使用Maven Helper解决Maven插件冲突

    1、何为依赖冲突 Maven是个很好用的依赖管理工具,但是再好的东西也不是完美的。Maven的依赖机制会导致Jar...

网友评论

      本文标题:Maven: 优秀的构建和依赖管理工具

      本文链接:https://www.haomeiwen.com/subject/yxcdyttx.html