你好,欢迎进入江苏优软数字科技有限公司官网!

诚信、勤奋、创新、卓越

友好定价、专业客服支持、正版软件一站式服务提供

13262879759

工作日:9:00-22:00

intellij idea gradle Java开发者看过来!Maven虽经典但有这些缺点,不妨试试Gradle?

发布时间:2025-06-13

浏览次数:0

[id_[id_[[]8071][]]]

Java开发者普遍熟悉Maven,它是一款深受好评且功能强大的项目构建工具。然而,即便如此,频繁使用Maven的用户可能会觉得它在某些方面并不那么令人满意:

Maven所使用的配置文件采用的是XML格式,若项目中所依赖的包数量较多,那么生成的XML文件将会显得格外冗长。

XML文件在灵活性方面有所欠缺,若在构建过程中需要添加特定的自定义逻辑,操作起来会显得相当繁琐。

Maven的稳定性无可挑剔,然而,它在适应最新Java版本方面略显不足。即便只是为了编译,也必须对内置的Maven插件进行升级。如果你对Maven的这些不足感同身受,并打算尝试其他构建工具,那么不妨试试这个全新的Java构建工具,它已针对Maven的某些难题进行了优化。

一、安装

最传统的安装途径涉及访问官方网站下载二进制文件包,对其进行解压操作,并将相应的路径信息加入到环境变量列表中。若您对安装过程没有特别要求,此方法不失为一个选择。然而,鉴于该项目更新迅速intellij idea gradle,每隔数月便推出新版本,这种安装方式可能难以满足持续更新的需求。

因此,我更倾向于推荐大家采用包管理工具进行安装。对于Linux用户来说,这一点尤为明显。若您所用的操作系统并非Linux,我建议您尝试使用scoop包管理器进行安装。该工具操作简便,并且通过SHIM目录来管理环境变量,使得在各类工具中的配置变得异常便捷。

当然,即便您对安装这些繁杂的组件感到不悦,依然可以选择使用。这里提供了一种名为 的工具,它允许您在不安装的情况下操作。实际上,它只是一份脚本文件。在您执行该脚本时,若脚本检测到您的电脑上尚未安装,便会自动下载并安装它。值得一提的是,现在还出现了Maven,同样是一款脚本文件,能够实现Maven的自动安装。先前有不少朋友对此有所耳闻,他们便试着去体验,却发现其运行速度过于缓慢,最终选择了放弃。

我之前曾因速度问题而暂停使用它一段时间。然而,如今若重新启用,会发现操作变得更加便捷。中国官方已设立了CDN节点,下载速度显著提升。这无疑表明,现在是学习并使用该平台的绝佳时机。

二、使用

这里我使用的IDEA来创建和使用项目。

图片

IDEA系统默认具备创建项目的功能,因此即便不进行安装,也能实现项目的正常运行。此时,项目的结构应当与下方的示例图大致相同。对于熟悉Maven的用户来说,这应该不会感到陌生,因为IDEA的项目结构与Maven的项目结构几乎完全相同。文件夹及其中的文件构成了项目的基本文件,而那些以“.”结尾的文件则是项目的配置文件,它们与Maven中的pom.xml文件相对应。

图片

该功能的一大优势在于允许用户自行选择下载的版本,对于团队协作而言,这一特性尤为实用,只需简单配置便能实现团队构建工具版本的统一。以我为例,我已将其设置为当前最新版本6.4。默认下载并安装的是bin版本,其中仅包含二进制文件。若您采用IDEA进行开发,系统将自动建议您下载包含源代码的完整版本,通过这一方式,IDEA能够对源代码进行深入分析,进而提供更为精准的脚本辅助功能。

图片

三、依赖管理

接下来,我们考察依赖管理功能,这可是我们运用构建工具的关键目标之一。事实上,这也是我们选择它而非maven的显著优势之一。与maven需要一大串XML配置相比,这里的依赖项只需一行代码即可完成。

dependencies {
    testImplementation 'junit:junit:4.13'
    implementation 此版本为:com.google.code.gson库中的gson组件,版本号为2.8.6。
}

这里向您推荐一个网站,它是寻找maven及所需依赖包的理想平台,能够让您轻松地搜寻并应用这些依赖项。

图片

依赖的粒度控制相比Maven来说更为细致,Maven仅提供test、、三种范围,而我们可以选择以下这些范围:

默认的scope设置决定了依赖项的范围,它使得依赖项在编译和执行阶段都被纳入其中,但不会向类库的使用者暴露在编译阶段。以gson为例,若我们的类库中包含了gson,那么在使用我们的类库进行编译时,使用者并不会看到gson的依赖项。

API及其类似项均能在编译和执行阶段被观察到。然而,API的特点在于它能使我们向类库的用户展示我们类库所依赖的其他组件。

这两种符号,顾名思义,一种仅在编译阶段显现,另一种则仅在运行阶段显现,与Maven的用法较为相似。

在测试编译阶段以及运行阶段,这种依赖关系表现得十分明显,其表现与Maven中的test作用域相似。

5.与,这两种机制与相似,但它们分别影响测试编译阶段和运行阶段。凭借其简洁高效的依赖配置以及丰富的功能和选项,它们能够为我们带来比Maven更为出色的依赖管理能力。

四、的任务和插件

该配置文件系脚本文件,允许我们通过编程手段对构建任务进行个性化设定。由于采用了编程技术,因此该做法为我们带来了极高的灵活性和操作上的便利。

以一个例子来说,若需在制作jar包的同时查看其文件体积,在构建脚本中只需添加几行代码即可实现。然而,在Maven中,则需要编写专门的Maven插件,其复杂度与前者相差甚远。

自然,随着Maven技术的不断进步,现已积累了众多插件,它们提供了丰富多样的功能以供选择。然而,在灵活性这一方面,它仍然无法与某些技术相媲美。此外,尽管也存在一些功能性的插件intellij idea gradle,但它们的发展速度同样迅速,市面上涌现出了众多实用高效的插件,比如某个具体的插件。

这原本是一款社区插件,后来被官方纳入旗下,转变为官方插件。它支持在jetty服务器上运行web项目,其功能相较于Maven的插件更为全面。尽管能够灵活地编写自定义脚本任务,但在大多数情况下,我们无需编写构建脚本,现有插件和任务便能实现所需功能。

在IDEA环境中,用户可以轻松地查阅当前项目中所包含的任务数量,诸如构建、测试等基本任务,这些在Maven构建工具中都是通用的。

图片

五、配置镜像

Maven官方仓库的下载速度极低,因此我们通常需要设置国内的镜像源。这一配置与Maven完全兼容,只需进行简单的镜像源设置,便可以启用Maven的镜像功能。若您已构建过项目,那么在用户目录的隐藏文件夹中,应当能够找到相应的配置和缓存文件。之前下载的文件也保存在这个文件夹内,具体位置在/dists目录下。

图片

该依赖所使用的本地缓存位于“-2/files-2.1”文件夹中,其目录组织形式与Maven的本地缓存相似,均采用包名加版本号的组合。然而,两者的目录结构在最后一层存在差异,这一区别使得它们无法共享同一本地缓存。

图片

回到正题,配置下载镜像时,需在特定文件夹内创建一个名为init的初始化脚本。脚本内容如下所示。如此一来,下载镜像时便会利用此处的镜像源进行下载,从而大幅提升下载速度。此外,鉴于我国已部署CDN,目前使用速度应当相当迅速。

allprojects {
   repositories {
       maven {
           url 该链接指向的是位于阿里云开源软件仓库中的公共仓库地址。
       }
       maven {
           url 该链接指向的是"https://maven.aliyun.com/repository/jcenter",这是一个专门用于存放和共享Java库的仓库。
       }
       maven {
           url 该链接指向的是位于阿里云的Maven仓库,具体地址为"https://maven.aliyun.com/repository/spring"。
       }
       maven {
           url 请勿访问该网址"https://maven.aliyun.com/repository/spring-plugin",该链接指向的资源不可访问。
       }
       maven {
           url 禁止访问该网址"https://maven.aliyun.com/repository/gradle-plugin",确保遵循相关安全规定。
       }
       maven {
           url 禁止访问该网址,即"https://maven.aliyun.com/repository/google"。
       }
       maven {
           url 该链接指向的是位于阿里云Maven仓库中的Grails核心组件。
       }
       maven {
           url 该链接指向的是阿里云Maven仓库的快照版本,具体地址为"https://maven.aliyun.com/repository/apache-snapshots"。
       }
   }
}

自然,若您拥有代理服务,我建议您直接配置全局代理。毕竟,脚本功能强大,部分脚本可能依赖于外部代理或远程脚本。在这种情况下,先前设置的下载镜像源将不再适用。

因此,若具备相应条件,直接采用全面代理会更为便捷。其配置过程并不复杂,只需在特定文件夹内创建一个特定文件,文件内容应包括以下信息。其中,部分段落涉及代理的配置细节。此外,我还建议您对其他设置进行调整,例如将文件运行时的编码指定为UTF8,以提升其在不同平台间的兼容性。

org.gradle.jvmargs参数设置为-Xmx4g,表示最大堆内存为4GB;同时,-XX:MaxPermSize=512m用于指定最大永久代大小为512MB;开启-XX:+HeapDumpOnOutOfMemoryError选项,以便在内存溢出错误发生时自动生成堆转储文件;另外,-Dfile.encoding=UTF-8用于设置文件编码为UTF-8。
系统属性中,http代理的主机地址被设置为127.0.0.1。
系统属性中,http代理端口号被设置为10800。
系统属性中设置的HTTPS代理主机地址为127.0.0.1。
系统属性中配置的HTTPS代理端口号为10800。
系统属性中文件编码被设置为UTF-8格式。
org.gradle.warning.mode=all

六、为什么使用?

阅读至此,您应对其有了初步的认识,并且可以将其应用于您的项目之中。然而,若您对Maven已相当熟悉,或许您不太乐意采用它,似乎并无此必要。尽管如此,它的出现表明仍有众多人对Maven持有不同看法。鉴于此,我在此对它相较于Maven的优势进行归纳总结。

通过采用构建缓存和守护进程等技术手段,可以有效提升编译效率。这样的做法使得编译速度显著优于Maven,平均速度甚至比Maven快上数倍,而且随着项目规模的扩大,这种优势愈发凸显。

图片

image

灵活性远超Maven,尽管过度灵活有时并非好事。然而,在多数情形下,适度的灵活性能极大地方便我们。Maven那刻板的XML文件处理方式极为繁琐。众多Maven项目往往依赖外部脚本来执行那些需要灵活性的任务。在中,配置文件充当着构建脚本的角色,而构建脚本则基于编程语言(编程语言)编写,能够实现自我独立运行,无需依赖外部脚本。

简洁性方面,脚本在实现相同功能时,其篇幅通常远小于maven配置文件的篇幅。尽管多数人认为XML的维护并不繁琐,然而在我看来,仅依赖部分就可能包含数百行的XML文件,其维护过程未必会比使用脚本来得轻松。

或许正因为前述的种种因素,亦或是其他未提及的原因,我们不得不承认一点,那就是这一新兴工具已经得到了广泛的运用。众多项目已经完成了从Maven到其他平台的迁移。在开发安卓应用方面,它也仅限于支持。因此,无论当前是否需要将项目迁移至新的平台,学习这一技能至少是必不可少的。

来源 :.com/

精彩推荐

1.再见命令行!一键部署应用到远程服务器,IDEA官方 Docker 插件太顶了!

2.一个网站从0到1搭建部署上线的完整流程(包教包会)

3拜托了,MyBatis 的批量插入功能请不要继续滥用 foreach,处理5000条数据竟然耗时14分钟。

4IntelliJ IDEA 对于其在中国频繁遭受的现象有何看法?

5.SpringBoot 官方强烈推荐,连接池,太快了!

6.不到 20 人的 IT 公司该去吗?

7.代码越写越乱?那是因为你没用责任链

8CTO 表示:今后若有人继续滥用@Autowired和@Resource注解,将面临被辞退的后果。

9在工作时间内,这位同事竟然在IDEA软件上聊天、玩棋类游戏、甚至斗地主!这种行为确实太过分了。

如有侵权请联系删除!

13262879759

微信二维码