项目构建工具

      一般面试中被问到的项目构建工具,常常会回答的是Maven

    今天大概了解了一下目前项目构建构建有Maven,Ant,Gradle 

Gradle 是一个构建工具,它是用来帮助我们构建app的,构建包括编译,打包等过程。我们可以为Gradle指定构建规则,然后他就会根据我们的命令自动为我们构建app。

Gradle配置文件

在Android Studio中新建一个工程,可以得到如下的工程结构图:

Android Studio中的一个Module即为Gradle中的一个Project。上图的app目录下,存在一个build.gradle文件,代表了app Module的构建脚本,它定义了应用于本模块的构建规则。我们可以看到,工程根目录下也存在一个build.gradle文件,它代表了整个工程的构建,其中定义了适用于这个工程中所有模块的构建规则。

Maven配置

如今我们构建一个项目需要用到很多第三方的类库,如写一个使用Spring的Web项目就需要引入大量的jar包。一个项目Jar包的数量之多往往让我们瞠目结舌,并且Jar包之间的关系错综复杂,一个Jar包往往又会引用其他Jar包,缺少任何一个Jar包都会导致项目编译失败。

以往开发项目时,程序员往往需要花较多的精力在引用Jar包搭建项目环境上,而这一项工作尤为艰难,少一个Jar包、多一个Jar包往往会报一些让人摸不着头脑的异常。

而Maven就是一款帮助程序员构建项目的工具,我们只需要告诉Maven需要哪些Jar 包,它会帮助我们下载所有的Jar,极大提升开发效率

  • Maven基本命令

-v:查询Maven版本

本命令用于检查maven是否安装成功。

Maven安装完成之后,在命令行输入mvn -v,若出现maven信息,则说明安装成功。

compile:编译

将java源文件编译成class文件

test:测试项目

执行test目录下的测试用例

package:打包

将项目打成jar包

clean:删除target文件夹

install:安装

将当前项目放到Maven的本地仓库中。供其他项目使用

  • 什么是Maven仓库?

Maven仓库用来存放Maven管理的所有Jar包。分为:本地仓库 和 中央仓库。

本地仓库:Maven本地的Jar包仓库。
中央仓库: Maven官方提供的远程仓库

  • 依赖冲突

若项目中多个Jar同时引用了相同的Jar时,会产生依赖冲突,但Maven采用了两种避免冲突的策略,因此在Maven中是不存在依赖冲突的。

1.短路优先

本项目——>A.jar——>B.jar——>X.jar
本项目——>C.jar——>X.jar
若本项目引用了A.jar,A.jar又引用了B.jar,B.jar又引用了X.jar,并且C.jar也引用了X.jar。

在此时,Maven只会引用引用路径最短的Jar。

2.声明优先

若引用路径长度相同时,在pom.xml中谁先被声明,就使用谁。

聚合

  1. 什么是聚合?

    将多个项目同时运行就称为聚合。

  2. 如何实现聚合?

    只需在pom中作如下配置即可实现聚合:

    <modules>
        <module>web-connection-pool</module>
        <module>web-java-crawler</module>
    </modules>

    继承

  3. 什么是继承?

  4. 在聚合多个项目时,如果这些被聚合的项目中需要引入相同的Jar,那么可以将这些Jar写入父pom中,各个子项目继承该pom即可。

  5. 如何实现继承?

  6. 父pom配置:将需要继承的Jar包的坐标放入标签即可

    <dependencyManagement>
        <dependencies>
              <dependency>
                <groupId>cn.missbe.web.search</groupId>
                <artifactId>resource-search</artifactId>
                <packaging>pom</packaging>
                <version>1.0-SNAPSHOT</version>
              </dependency> 
        </dependencies>
    </dependencyManagement>

    子pom配置

  7. <parent>
          <groupId>父pom所在项目的groupId</groupId>
          <artifactId>父pom所在项目的artifactId</artifactId>
          <version>父pom所在项目的版本号</version>
    </parent>
     <parent>
          <artifactId>resource-search</artifactId>
          <groupId>cn.missbe.web.search</groupId>
          <version>1.0-SNAPSHOT</version>
    </parent>

    Ant 构建

   基于另一个构建文件中的一个目标调用Ant从而可以将构建文件分解为多个Ant构建文件,它会实例化一个新的Ant工程。属性值能在新ant工程中使用。如果需要在一个构件文件中通过Ant命令去执行另一个Ant项目,或者说要执行本项目的子项目的构件文件。这时Ant这个核心任务就派上用场了。简单地说Ant任务的作用就相当于在命令行通过Ant命令执行构件文件。值得注意的是Ant任务依赖于target元素,需要在某个target元素中使用,不能在target元素外独立使用。

ant项目的结构如下:

project-root/
├── src/
│   ├── java/                 # Java源码
│   └── resources/            # 资源文件(如配置文件)
├── lib/                      # 第三方库(JAR文件)
├── web/                      # Web资源(如JSP文件)
│   ├── WEB-INF/
│   │   ├── lib/              # Web应用库
│   │   ├── web.xml           # Web应用配置文件
│   │   └── classes/          # 编译后的类文件
├── build/                    # Ant构建输出目录
└── build.xml                 # Ant构建脚本
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值