Maven 和 Gradle 构建工具的基本使用

news2024/11/29 0:37:54

Maven和Gradle是Java生态系统中最常用的构建工具,它们不仅能简化项目的构建过程,还能帮助管理项目依赖、打包、发布等任务。本文将详细介绍如何掌握Maven和Gradle的基本使用,帮助开发者快速上手并应用于实际项目中。

一、Maven

1.1 什么是Maven?

Maven是Apache基金会下的一个项目管理工具,它基于项目对象模型(POM),用于管理项目的构建、报告和文档。Maven通过一系列的插件和配置文件来简化和自动化项目构建过程。

1.2 安装Maven

1. 下载Maven: 访问Maven官网下载页面,下载适合你操作系统的版本。

2. 解压文件: 将下载的压缩文件解压到你希望安装的位置,例如/usr/local/apache-maven

3. 配置环境变量:

  • Windows:在系统环境变量中添加MAVEN_HOME和PATH。
MAVEN_HOME = C:\path\to\apache-maven
PATH = %PATH%;%MAVEN_HOME%\bin
  • macOS/Linux:在~/.bash_profile~/.bashrc中添加如下配置:

4. 验证安装: 打开命令行,输入mvn -v,若显示Maven的版本信息,则安装成功。

1.3 创建Maven项目

1. 使用Maven Archetype创建项目: Maven Archetype是一个模板工具,可以帮助快速生成项目结构。

mvn archetype:generate -DgroupId=com.example -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
  • groupId:组织标识,一般为域名反写形式。
  • artifactId:项目名。
  • archetypeArtifactId:使用的模板,这里选择maven-archetype-quickstart

2. 项目结构:

my-app
├── pom.xml
└── src
    ├── main
    │   └── java
    │       └── com
    │           └── example
    │               └── App.java
    └── test
        └── java
            └── com
                └── example
                    └── AppTest.java

1.4 配置POM文件

pom.xml是Maven项目的核心配置文件,它定义了项目的基本信息、依赖、插件等。

1. 项目基本信息:

<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>com.example</groupId>
    <artifactId>my-app</artifactId>
    <version>1.0-SNAPSHOT</version>
</project>

2. 添加依赖:

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

1.5 常用Maven命令

1. 清理项目:

mvn clean

删除生成的目标目录(target)。

2. 编译项目:

mvn compile

编译主源码。

3. 运行测试:

mvn test

编译并运行测试源码。

4. 打包项目:

mvn package

将项目打包成一个JAR文件,放在target目录中。

5. 安装到本地仓库:

mvn install

将打包好的JAR文件安装到本地Maven仓库,供其他项目使用。

二、Gradle

2.1 什么是Gradle?

Gradle是一个基于Groovy和Kotlin DSL的构建自动化工具。与Maven相比,Gradle更灵活,支持多种语言的构建,包括Java、Groovy、Kotlin、Scala等。

2.2 安装Gradle

1. 下载Gradle: 访问Gradle官网下载页面,下载适合你操作系统的版本。

2. 解压文件: 将下载的压缩文件解压到你希望安装的位置,例如/usr/local/gradle

3. 配置环境变量:

  • Windows:在系统环境变量中添加GRADLE_HOME和PATH。
GRADLE_HOME = C:\path\to\gradle
PATH = %PATH%;%GRADLE_HOME%\bin
  • macOS/Linux:在~/.bash_profile~/.bashrc中添加如下配置:
export GRADLE_HOME=/path/to/gradle
export PATH=$GRADLE_HOME/bin:$PATH

4. 验证安装: 打开命令行,输入gradle -v,若显示Gradle的版本信息,则安装成功。

2.3 创建Gradle项目

1. 使用Gradle Wrapper创建项目: Gradle Wrapper是一个推荐的初始化项目的方式,它可以确保使用特定版本的Gradle。

gradle wrapper --gradle-version 7.0

生成gradlewgradlew.bat脚本,以及gradle/wrapper/gradle-wrapper.properties配置文件。

2. 项目结构:

my-app
├── build.gradle
├── gradle
│   └── wrapper
│       └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
└── src
    ├── main
    │   └── java
    │       └── com
    │           └── example
    │               └── App.java
    └── test
        └── java
            └── com
                └── example
                    └── AppTest.java

2.4 配置build.gradle文件

build.gradle是Gradle项目的核心配置文件,定义了项目的依赖、插件、任务等。

1. 项目基本信息:

plugins {
    id 'java'
}

group 'com.example'
version '1.0-SNAPSHOT'

sourceCompatibility = '1.8'

repositories {
    mavenCentral()
}

2. 添加依赖:

dependencies {
    testImplementation 'junit:junit:4.12'
}

2.5 常用Gradle命令

1. 清理项目:

gradle clean

删除生成的build目录。

2. 编译项目:

gradle build

编译并打包项目。

3. 运行测试:

gradle test

编译并运行测试源码。

4. 运行应用: 如果项目中有main方法,可以使用如下命令运行应用:

gradle run

三、Maven与Gradle的对比

3.1 配置文件对比

  • Maven使用XML作为配置文件(pom.xml),结构化且严谨,但不够简洁。
  • Gradle使用Groovy或Kotlin DSL作为配置文件(build.gradle),语法简洁且灵活。

3.2 依赖管理

  • Maven依赖管理通过中央仓库和本地仓库,声明依赖简单直观。
  • Gradle依赖管理更灵活,可以通过多种方式定义依赖,支持多种仓库。

3.3 插件与扩展

  • Maven插件体系成熟,生态丰富,但扩展性稍差。
  • Gradle插件体系灵活,易于扩展,支持自定义任务。

3.4 性能与并行构建

  • Gradle支持并行构建,构建速度较快,适合大型项目。
  • Maven默认不支持并行构建,速度相对较慢,但通过配置可以提升性能。

3.5 社区与支持

  • Maven社区成熟,文档丰富,使用广泛。
  • Gradle社区发展迅速,文档完善,逐渐被更多企业接受。

黑马程序员免费预约咨询

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1844588.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

第三方软件测试机构流程分享,软件检测报告需多少时间和费用?

第三方软件测试机构是区别于软件开发方和需求方的第三者存在&#xff0c;是专门为客户提供全方位软件测试服务的第三方检测机构。测试流程经过精心设计和不断优化&#xff0c;以确保客户的软件品质得到有效保障&#xff0c;那么第三方软件测试机构的基本测试流程具体有哪些呢?…

一套二开版微交易系统 香港十大贵金属交易平台 贵金属交易平台 贵金属交易app下载 微盘交易系统

一套二开前端UI得贵金属微交易系统&#xff0c;前端产品后台可任意更换 此系统框架不是以往的至尊的框架&#xff0c;系统完美运行&#xff0c;K线采用nodejs方式运行 源码使用起来非常流畅&#xff0c;不像至尊卡成翔 源码下载&#xff1a;https://download.csdn.net/downl…

Macbook pro插硬盘没反应,Macbook pro移动硬盘读不了怎么办

为了弥补Macbook pro硬盘容量的缺失&#xff0c;我们有时候会使用到外接硬盘或移动硬盘。一般来说&#xff0c;这些硬盘都是即插即用的&#xff0c;可能部分要安装插件。不过&#xff0c;在一些特殊情况下&#xff0c;也会遇到插硬盘没反应等问题。本文会给大家解答Macbook pro…

Linux——ansible关于“文件操作”的模块

修改文件并将其复制到主机 一、确保受管主机上存在文件 使用 file 模块处理受管主机上的文件。其工作方式与 touch 命令类似&#xff0c;如果不存在则创建一个空文件&#xff0c;如果存在&#xff0c;则更新其修改时间。在本例中&#xff0c;除了处理文件之外&#xff0c;Ansi…

Excel中插入的图片在不同电脑上消失的问题及解决方法

在使用Excel时插入图片&#xff0c;然后在不同电脑上打开却发现图片消失并被替换为链接地址&#xff0c;这个问题通常出现于文件中的图片路径没有正确保存或者电脑上缺少相关的图片文件。下面让我们来详细解释这个问题以及可能的解决方法。 ### 问题原因分析1. **相对路径问题…

mysql8.0找不到my.ini

报错问题解释&#xff1a; MySQL 8.0 在Windows系统中通常不需要 my.ini 文件&#xff0c;因为安装程序会在 %PROGRAMDATA%\MySQL\MySQL Server 8.0\ &#xff08;通常是 C:\ProgramData\MySQL\MySQL Server 8.0\&#xff09;创建默认的配置文件。如果你的系统中找不到 my.ini…

Harmony设计模式-单例模式

Harmony设计模式-单例模式 前言 软件设计模式&#xff08;[Design pattern](https://baike.baidu.com/item/Design pattern/10186718?fromModulelemma_inlink)&#xff09;&#xff0c;又称设计模式&#xff0c;是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经…

中文分词词云图

目录 一、分词1、分词方式方法2、分词优缺点 二、jieba使用示例1、引入库2、切分模式3、加载自定义字典 三、词的可视化1、读取数据2、数据处理3、统计词频4、去除停用词5、词云图1、pyecharts绘图2、WordCloud绘图 一、分词 1、分词方式方法 以构词规则为出发点的规则分词 全…

科普文章:怎么远程监控电脑屏幕?三种监控电脑屏幕的方法

远程监控公司电脑屏幕是一项重要的管理手段&#xff0c;它不仅有助于提升工作效率&#xff0c;还能确保公司信息安全和合规性。随着远程办公的普及&#xff0c;这一需求变得日益重要。下面我将详细介绍几种实现远程监控公司电脑屏幕的方法&#xff0c;以及实施过程中需要注意的…

看完再买不后悔!希喂、小米、霍尼韦尔宠物空气净化器性价比比拼

在忙碌的工作之余&#xff0c;养一只猫真的能治愈一切的不快&#xff0c;让我们的心灵得到片刻的宁静。然而&#xff0c;这份宁静背后&#xff0c;却隐藏着一些不易察觉的烦恼——猫浮毛和异味。 猫浮毛&#xff0c;这个看似微不足道的小问题&#xff0c;实则给许多宠物主人带…

我在高职教STM32——LCD液晶显示(2)

大家好&#xff0c;我是老耿&#xff0c;高职青椒一枚&#xff0c;一直从事单片机、嵌入式、物联网等课程的教学。对于高职的学生层次&#xff0c;同行应该都懂的&#xff0c;老师在课堂上教学几乎是没什么成就感的。正因如此&#xff0c;才有了借助 CSDN 平台寻求认同感和成就…

LabVIEW_TDMS

1.TDMS设置属性 想给这里写属性怎么整 使用TDMS设置属性函数时&#xff0c;对组名称与通道名称不设置&#xff0c;即可达到上图中的样式。 PS&#xff1a;属性名称如果设置一样则最终生效的值为最后写入的值。如将属性2修改为属性1&#xff0c;则最终只有1个属性1&#xff0c…

C++语法04 标准输入语句

标准输入 使用格式&#xff1a;cin >> 输入的意思就是把一个值放到变量里面去&#xff0c;也就是变量的赋值&#xff0c;这个值是由我们自己输入的。 (注意:输入变量前要先定义&#xff0c;输入完之后要按Enter键。) 输入多个变量&#xff0c;与输出类似&#xff0c;…

基于一种改进熵方法的旋转机械故障诊断模型(MATLAB)

熵的概念起源于热力学&#xff0c;1884年&#xff0c;玻尔兹曼定义熵&#xff0c;用以描述分子热运动的无序性和混乱度。1948年&#xff0c;Shannon在其发表的《AMathematicalTheoryofCommunication》中提出香农熵&#xff0c;首次将“熵”引入信息度量范畴&#xff0c;为信息论…

C语言实现树和二叉树(二)

OK&#xff0c;各位未来的高级程序员们&#xff0c;大家好&#xff0c;今天我们来讲解一下二叉树这个部分的第二种存储结构---------链式存储结构&#xff0c;相信大家对这部分内容已经很期待了&#xff0c;但是&#xff0c;这里我们在开讲之前&#xff0c;要先补充一个知识&am…

AJAX 综合案例-day2

Bootstrap 弹框 功能&#xff1a;不离开当前页面&#xff0c;显示单独内容&#xff0c;供用户操作 步骤&#xff1a; 1. 引入 bootstrap.css 和 bootstrap.js 2. 准备 弹框标签 &#xff0c;确认结构 3. 通过 自定义属性 &#xff0c;控制弹框的 显示 和 隐藏 1. 通过属性…

SAP_FICO模块-获利能力段新增特征字段

业务背景&#xff1a; 公司有启用获利能力分析功能&#xff0c;有一个销售订单接口&#xff0c;是通过第三方销售订单管理平台推送数据到SAP的&#xff0c;用户希望对接新增一个编号ID到销售订单上&#xff0c;并且可以用KE24/KE30报表查看显示&#xff1b; 对于我这么一个后勤…

小程序打开空白的问题处理

小程序打开是空白的&#xff0c;如下&#xff1a; 这个问题都是请求域名的问题&#xff1a; 一、检查服务器域名配置了 https没有&#xff0c;如果没有&#xff0c;解决办法是申请个ssl证书&#xff0c;具体看这里 https://doc.crmeb.com/mer/mer2/4257 二、完成第一步后&#…

云动态摘要 2024-06-20

给您带来云厂商的最新动态,最新产品资讯和最新优惠更新。 最新优惠与活动 [低至1折]腾讯混元大模型产品特惠 腾讯云 2024-06-06 腾讯混元大模型产品特惠,新用户1折起! 云服务器ECS试用产品续用 阿里云 2024-04-14 云服务器ECS试用产品续用 最新产品更新 [功能优化]费用…

栈,队列,数组,链表

一.数据结构概述 数据结构是计算机底层存储,组织数据的方式。 是指数据相互之间是以什么方式排列在一起的。 数据结构是为了更加方便的管理和使用数据,需要结合具体的业务场景来进行选择。 一般情况下,精心选择的数据结构可以来更高的运行或者存储效率。 二.学好数据结构三大…