项目构建工具

简介: 项目构建工具

 一般面试中被问到的项目构建工具,常常会回答的是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>


继承

  1. 什么是继承?
  2. 在聚合多个项目时,如果这些被聚合的项目中需要引入相同的Jar,那么可以将这些Jar写入父pom中,各个子项目继承该pom即可。
  3. 如何实现继承?
  1. 父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配置

<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构建脚本
目录
相关文章
|
6月前
|
Java Apache 项目管理
使用Maven进行Java项目构建与依赖管理
【4月更文挑战第16天】Apache Maven是Java项目的核心构建工具,它基于POM进行项目管理和构建自动化,简化构建过程并管理依赖。Maven提供标准化的目录结构、自动依赖解决、丰富的插件生态、多模块构建支持和版本管理功能。通过安装Maven、创建项目、配置依赖、构建及使用插件,开发者能高效管理Java项目,提升开发效率。了解和掌握Maven对于Java开发者至关重要。
75 4
|
6月前
|
IDE Java Maven
Maven或Gradle:构建工具的使用和配置等知识讲解梳理
Maven或Gradle:构建工具的使用和配置等知识讲解梳理
203 1
|
Java Maven
Maven插件开发简明教程(1)
Maven插件开发简明教程(1)
65 0
Maven插件开发简明教程(1)
|
存储 算法 Java
Maven自动化构建依赖管理工具
Maven自动化构建依赖管理工具
188 0
|
存储 Java API
Gradle筑基篇(六)-使用Maven实现组件化类库发布
前面几篇文章我们讲解了关于关于`Gradle的基础`,`Gradle生命周期`,`Gradle相关Api`的讲解,以及`Gradle自定义插件`,这篇文章我们就来讲解下如何使用`Maven进行组件化发布`
|
弹性计算 Java Maven
开发笔记20 | 多模块 Maven 工程部署
开发笔记20 | 多模块工程部署
13531 11
|
域名解析 IDE Java
常用 Maven 插件终极大全
我们都知道Maven本质上是一个插件框架,它的核心并不执行任何具体的构建任务,所有这些任务都交给插件来完成,例如编译源代码是由maven- compiler-plugin完成的。本文将为大家介绍一些常用的 Maven 插件。
1372 0
常用 Maven 插件终极大全
|
Java 程序员 Apache
走进JavaWeb技术世界12:从手动编译打包到项目构建工具Maven
本系列文章将整理到我在GitHub上的《Java面试指南》仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial 喜欢的话麻烦点下Star哈 文章首发于我的个人博客: www.how2playlife.com 本文是微信公众号【Java技术江湖】的《走进JavaWeb技术世界》其中一篇,本文部分内容来源于网络,为了把本文主题讲得清晰透彻,也整合了很多我认为不错的技术博客内容,引用其中了一些比较好的博客文章,如有侵权,请联系作者。
|
架构师 IDE Java
常用Maven插件终极大全,速度收藏!
我们都知道Maven本质上是一个插件框架,它的核心并不执行任何具体的构建任务,所有这些任务都交给插件来完成,例如编译源代码是由maven- compiler-plugin完成的。
|
Java Maven Spring
使用Maven搭建多模块项目
一. jeesite4项目文件夹下有五个文件, 他们通过Maven构成了项目的四个模块, 文件结构如下(去掉其他不相关文件): 其中root为根, 根下包含了四个模块, common(公共模块), modules/core(核心模块), parent(父模块), web(web业务模块)导入项目时, 只需要导入root中的pom.