maven、gradle、ant 项目构建工具的介绍

标签:

本文出自jvm123.com-java技术分享站:http://jvm123.com/2019/09/maven-gradle-ant.html

maven、gradle、ant 三者都可用作项目构建,其中maven和gradle还可用作项目依赖管理。由于项目依赖管理比较简单,本文主要介绍 maven、gradle、ant 三者作为项目构建工具的用法。

Apache Ant

Apache Ant 是一个java编写的项目构建工具,所以具有很好的跨平台性,它不仅仅用在java项目中。使用 Apache Ant 可以讲项目的 编译、测试、部署等步骤 联系起来,自动化执行。

Apache Ant 在项目的根目录下定义 build.xml 文件,在文件中定义多个 target ,通过执行target来完成一些任务,执行一些操作,其中有许多内置任务可以直接使用,编写比较方便灵活。如下build.xml文件:

<?xml version="1.0" encoding="utf-8"?>
<project name="02-ant" basedir="." default="help">
    <property name="src" value="src" />
    <property name="classes" value="bin" />

    <path id="classpath">
        <pathelement path="${classes}" />
    </path>

    <target name="compile" description="编译">
        <delete dir="${classes}" />
        <mkdir dir="${classes}" />
        <javac srcdir="${src}" destdir="${classes}" debug="true" includeantruntime="false">
            <classpath refid="classpath" />
        </javac>
    </target>

</project>

如果在此文件所在的目录执行 ant complie 命令,就是执行了文件中定义的compile(编译)的这个target。其中这个target会执行以下任务:

    1. delete 删除classes目录中的内容
    2. 创建一个新的classes文件夹
    3. 编译src目录中的java文件,讲编译结果放在classes文件夹下

通过以上的三个内置的任务,完成了java项目的编译过程。即完成了一个target。

<target name="build" description="打包" depends="compile">
    <delete dir="${output}" />
    <mkdir dir="${output}" />
    <jar destfile="${output}/app.jar" basedir="${classes}" includes="**/*.class">
        <manifest>
            <attribute name="Main-Class" value="Program"/>
            <attribute name="Class-Path" value="${classes}"/>
            <attribute name="classpath" value="${classes}"/>
        </manifest>
    </jar>
</target>

以上代码 为一个 打包的target,这个target依赖于compile,即在执行这个target之前,会自动执行compile。

诸如以上的示例,我们可以使用这些内置的任务来组成不同的target,通过执行target就可以完成的编译、打包、运行、部署等项目构建目标。

更多 Apache Ant内置任务请参考:

Apache Maven

Apache Maven 主要用作项目依赖管理和项目构建。

Apache Maven 项目依赖管理主要通过中央仓库存储jar包,在项目的 pom.xml 文件中 <dependencies> 标签下可添加jar包的坐标,maven会自动下载依赖。

Apache Maven 项目构建主要通过 maven 的标准生命周期来完成。由于maven生成项目的文件夹结构相对固定,所以在执行maven的生命周期命令时,一般不需要指定生成文件(编译、打包文件)的位置。

其中maven常用的生命周期如下:

    1. clean : 清理 target 文件夹
    2. compile : 编译java文件,放在target/classses文件夹下
    3. package : 将.classes 文件打包成jar包
    4. install : 将jar包安装在本地的maven仓库
    5. deploy : 将jar包发布在远程maven仓库

Gradle Build Tool

Gradle 也是一个项目依赖管理和项目构建的工具,gradle在项目根目录使用groovy语言编写一个build.gradle文件,这个文件中可以添加项目的依赖和项目的构建任务。

依赖管理和项目构建类似于maven, 而构建任务也可以简单地自定义,这样增加了项目构建的灵活性。

具体完整的示例参考:

发表评论