一个操作,轻松迁移 Maven 至 Gradle

2023-05-16

今天我们来讲讲如何将 Maven 项目转换为 Gradle 项目。 这个过程还是蛮简单的,下面通过一个例子来说明怎么转换。

Gradle 设置

如果没有安装 gradle, 我们可以从 Gradle 官网下载最新的版本,根据gradle官方的文档安装即可。 可以看我们之前的文章,这里不过多的描述。

Maven pom

假设我们有这样一个 maven项目,pom.xml 文件如下:

<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>cn.javanorth</groupId>
    <artifactId>maven-to-gradle</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <dependencies>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>3.12.0</version>
        </dependency>
    </dependencies>
</project>

有了maven项目,也安装了gradle,那我们就可以动手转换到gradle了。

执行 gadle init

我们在终端跳转到Maven项目的根目录,就是包含pom.xml 文件的目录, 然后执行 gradle init 命令。从终端响应结果从输入yes 并按回车健。

$ gradle init

Found a Maven build. Generate a Gradle build from this? (default: yes) [yes, no] yes


> Task :init
Maven to Gradle conversion is an incubating feature.
Get more help with your project: https://docs.gradle.org/7.3/userguide/migrating_from_maven.html

BUILD SUCCESSFUL in 3s
2 actionable tasks: 2 executed

生成的Gradle构建文件

现在让我们重新检查一下我们项目的根目录的内容。我们应该在根目录中看到一些新文件,下面我们展开讲讲这几个文件的用处。

build.gradle

build.gradle 文件是Gradle构建过程的核心组件,它直接等同于Maven构建的pom.xml文件。我们可以看到pom.xml中的依赖属性,如groupId、version、dependencies,会有一些对应的gradle属性与之关联。

另外还有sourceCompatibility属性,它是用于告诉我们在编译Java时要使用哪个Java版本。

插件部分, java是为构建任何类型的Java项目提供支持,而 maven-publish 是为发布项目到Maven兼容的仓库提供支持。

/*
 * This file was generated by the Gradle 'init' task.
 */

plugins {
    id 'java'
    id 'maven-publish'
}

repositories {
    mavenLocal()
    maven {
        url = uri('https://repo.maven.apache.org/maven2/')
    }
}

dependencies {
    implementation 'org.apache.commons:commons-lang3:3.12.0'
}

group = 'cn.javanorth'
version = '0.0.1-SNAPSHOT'
description = 'maven-to-gradle'
java.sourceCompatibility = JavaVersion.VERSION_1_8

publishing {
    publications {
        maven(MavenPublication) {
            from(components.java)
        }
    }
}

settings.gradle

Gradle在初始化过程中是通过使用settings.gradle文件来配置并确定哪些项目被包含在此次构建中。

/*
 * This file was generated by the Gradle 'init' task.
 */

rootProject.name = 'maven-to-gradle'

gradlew 和 gradlew.bat

Gradle还生成了两个启动脚本,gradlew.bat 用于Windows,而gradlew用于Unix和Linux的环境,这些脚本也可以在没有设置Gradle的机器上运行项目,它会自动下载gradle wrapper来运行。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

一个操作,轻松迁移 Maven 至 Gradle 的相关文章

随机推荐

  • MSP-EXP430F5529LP: Error initializing emulator: No USB FET was found

    正常情况下 xff0c 安装了CCS之后 xff0c TI MSP430LaunchPad的驱动都可以自动安装好 主要是 xff1a MSP Application UART 和 MSP Debug Interface 当然 xff0c 非
  • CMakeLists.txt加载第三方库

    生成一个库文件 TgMath h ifndef TGMATH H define TGMATH H include 34 tgmath global h 34 class TGMATHSHARED EXPORT TgMath public T
  • ROS学习之订阅消息——Subscriber_代码分析

    接上篇 xff1a ROS学习之发布消息 Publisher 详解版本 xff1a 本代码文件名为 xff1a subscriber cpp include 34 ros ros h 34 include 34 std msgs Strin
  • LXC 介绍

    转自 xff1a https www cnblogs com xidongyu p 5767020 html LXC又名Linux container xff0c 是一种虚拟化的解决方案 xff0c 这种是内核级的虚拟化 主流的解决方案Xe
  • openstack原生网络和SDN网络对比

    1 原生Neutron架构图 xff1a 2 Networking odl的架构 3 ODL 处理过程 当OpenStack Neutron API接收到用户创建网络等操作请求 xff0c 它会调用ML2的相关方法 ML2已经定义了post
  • 树莓派 Raspberry Pi 3B+安装官方系统(一)

    两年前购买的树莓派 xff08 可看当时我的记录树莓派 3B 43 重装系统并配置 WiFi YouForever xff09 已经在角落里吃灰了好长时间 xff0c 一度以为已经损坏 xff0c 几天前试着拿出来折腾一下 xff0c 竟然
  • Rime——最好的输入法

    同步发布在博客 xff1a https www zhyong cn 9422 最近迷上了五笔输入法 xff0c 于是想找一款好用的五笔输入法软件 xff0c 最终确定鼎鼎大名的Rime输入法 一款跨平台的开源输入法 xff0c 支持Wind
  • Haar特征描述算子-人脸检测

    Haar特征描述算子 人脸检测 详细资料 3 1简介 Haar like特征最早是由Papageorgiou等应用于人脸表示 xff0c 在2001年 xff0c Viola和Jones两位大牛发表了经典的 Rapid Object Det
  • HTML(css+div)登录界面

    xff08 1 xff09 这是当时做的一个课程设计 xff0c 很多人想要图片 xff0c 在这里我把用到的所有图片资源分享下 xff08 2 xff09 链接 xff1a https pan baidu com s 1nUX1DQe a
  • 基于Matlab的GPU加速---for循环处理

    采用GPU加速时 xff0c 如遇for循环 xff0c 则很容易增加代码在GPU上运行的时间开销 在编程时 xff0c 使用矩阵和向量操作或arrayfun bsxfun pagefun替换循环操作来向量化代码 1 arrayfun函数
  • android ndk extern "C"

    C 43 43 的代码里面 xff1a extern 34 C 34 这是因为生成的二进制文件中 xff0c C和C 43 43 的符号表不相同造成的 Jni是按照C的生成规则去找函数的 xff0c 所以要加上extern C使编译器把函数
  • AdaBoost中利用Haar特征进行人脸识别算法分析与总结1——Haar特征与积分图

    目前因为做人脸识别的一个小项目 xff0c 用到了AdaBoost的人脸识别算法 xff0c 因为在网上找到的所有的AdaBoost的简介都不是很清楚 xff0c 让我看看头脑发昏 xff0c 所以在这里打算花费比较长的时间做一个关于Ada
  • 智能驾驶仿真场景构建技术

    随着汽车智能化程度的不断提高 xff0c 智能汽车通过环境传感器与周边行驶环境的信息交互与互联更为密切 xff0c 需应对的行驶环境状况也越来越复杂 xff0c 包括行驶道路 周边交通和气象条件等诸多因素 xff0c 具有较强的不确定性 难
  • Web应用程序的身份验证:Session认证、Token认证

    一 Web应用程序的身份验证 1 Session认证 用户向服务器发送用户名和密码 服务器验证通过后 xff0c 在当前对话 xff08 session xff09 里面保存相关数据 xff0c 如用户角色 xff0c 登陆时间等 服务器向
  • 计算机视觉: 物体分类,场景分类,事件分类

    主要总结一下最近看的几篇场景分类文献 xff0c 顺便总结场景 物体和事件分类的关系 1 ILSVRC 2015 Scene Classi cation Challenge 冠军 xff0c 主要贡献是Relay Backpropagati
  • CSS | 替换元素(可置换元素)

    替换元素 定义 xff1a 可替换元素是指元素内容的展现不是由 CSS 来控制的 xff0c 而是外观渲染独立于 CSS 的外部对象 详见 xff1a MDN 典型的可替换元素有 xff1a lt img gt lt iframe gt l
  • 输入一个int型整数,按照从右向左的阅读顺序,返回一个不含重复数字的新的整数

    输入一个int型整数 xff0c 按照从右向左的阅读顺序 xff0c 返回一个不含重复数字的新的整数 输入 xff1a 输出代码 xff1a 输入 xff1a 9876673 输出 37689 代码 xff1a int span class
  • 树莓派温度检测

    树莓派温度检测 一 shell命令 登录树莓派之后使用指令查看CPU温度 xff0c 依次输入以下指令 xff1a 进入目录 cd sys class thermal thermal zone0 查看温度 cat temp 树莓派返回 47
  • PX4学习(1)——PX4固件版本开发环境(ROS+mavros版本)

    参考px4官网流程 xff1a https dev px4 io en setup dev env linux ubuntu html https dev px4 io en setup building px4 html 配置过程中网速一
  • 一个操作,轻松迁移 Maven 至 Gradle

    今天我们来讲讲如何将 Maven 项目转换为 Gradle 项目 这个过程还是蛮简单的 xff0c 下面通过一个例子来说明怎么转换 Gradle 设置 如果没有安装 gradle xff0c 我们可以从 Gradle 官网下载最新的版本 x