Java高性能新一代构建工具Maven-mvnd(实践可行版)

 更新时间:2023年06月19日 11:05:02   作者:程序员兔哥  
这篇文章主要介绍了Java高性能新一代构建工具Maven-mvnd(实践可行版),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

Maven-mvnd介绍

Maven 的优点是稳定可靠,在绝大多数的项目上工作良好,社区生态很完善,几乎所有的 Java 开发者都在用。Maven 的缺点是,对于大一点的项目来说,构建太慢了。有时候只能在服务器端完成构建 ,心酸呀。

Gradle 的优点是足够的灵活,构建速度也会更快一点,因为使用了后台进程和缓存机制。Gradle 的缺点是版本迭代速度太快,社区跟不上,对于初学者来说,还是有一定的学习曲线。

所有是否有一种能快速构建Java项目的工具时,今天重点推荐maven-mvnd,是Apache Maven团队借鉴了Gradle和Takari的优点,衍生出来的更快的构建工具,maven的强化版,解决Maven构建慢的问题,又不需要重新学习,懂Maven你就能驾驭Maven-mvnd。

maven-mvnd 特性:

  • 嵌入 Maven (所以不需要单独安装 Maven);maven 过渡到 maven-mvnd的过程中实现 无缝切换!所以不需要再安装maven或进行复杂的配置更改。
  • 实际的构建发生在一个长期存在的后台进程中,也就是守护进程。如果没有为构建请求服务的空闲守护进程,则可以并行产生多个守护进程。
  • 一个守护进程实例可以处理来自 mvnd 客户机的多个连续请求。
  • 使用 GraalVM 构建的本地可执行文件。与传统的 JVM 相比,它启动更快,使用的内存更少。

这种架构带来的优势有:

  • 运行实际构建的 JVM 不需要为每个构建重新启动,节省时间。
  • JVM 中的实时(JIT)编译器生成的本机代码也保留了下来。与 Maven 相比,JIT 编译花费的时间更少。在重复构建过程中,JIT 优化的代码可以立即使用。这不仅适用于来自 Maven 插件和 Maven Core 的代码,也适用于来自 JDK 本身的所有代码。

使用步骤

下载

https://github.com/mvndaemon/mvnd/releases

安装

直接解压。然后配置环境变量:

  • JAVA_HOME
  • MAVEN_HOME
  • MAVEN_MVND_HOME

将 bin 目录添加到 PATH,注意前提条件JAVA_HOME是存在,如果没有配置JAVA_HOME

测试

mvnd -v

使用

在使用上和Maven一样,参数也一致。

Maven 使用mvn clean package;使用Maven-mvnd 只需要变成mvnd clean package即可,其他同理。

配置修改

为了最小程度的兼容原来的Maven,可以使用原来的setting.xml

打开 Maven-mvnd 安装目录下 的/conf/mvnd.properties 文件,在文件最后一行,修改如下:

如果没有配置JAVA_HOME也可以指定Java JDK路径:

maven.settings=F:/javaee/apache-maven-3.6.3/conf/settings.xml

打包对比

# maven 打包命令
mvn clean package  '-Dmaven.test.skip=true'
# mvnd 打包命令
mvnd clean package  '-Dmaven.test.skip=true'

子项目越多,相对速度更快的趋势。

总的来说,如果项目模块很多,可以尝试使用 mvnd 进行辅助打包,比如 测试、生产,可以节省很多时间;

到此这篇关于新一代Java高性能构建工具Maven-mvnd【实践可行版】的文章就介绍到这了,更多相关Java构建工具Maven-mvnd内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • springboot 使用自定义的aspect的示例代码

    springboot 使用自定义的aspect的示例代码

    这篇文章主要介绍了springboot 使用自定义的aspect的示例代码,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-08-08
  • 使用Java发送带附件的附件的示例

    使用Java发送带附件的附件的示例

    这篇文章主要介绍了使用Java发送带附件的附件的方法,使用到了JavaMail这个API,需要的朋友可以参考下
    2015-11-11
  • Java cglib为实体类(javabean)动态添加属性方式

    Java cglib为实体类(javabean)动态添加属性方式

    这篇文章主要介绍了Java cglib为实体类(javabean)动态添加属性方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02
  • mybatis类型转换器如何实现数据加解密

    mybatis类型转换器如何实现数据加解密

    这篇文章主要介绍了mybatis类型转换器如何实现数据加解密,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • Springboot通过aop实现事务控制过程解析

    Springboot通过aop实现事务控制过程解析

    这篇文章主要介绍了Springboot通过aop实现事务控制过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • 巧用FutureTask 线程池轻松解决接口超时问题

    巧用FutureTask 线程池轻松解决接口超时问题

    这篇文章主要为大家介绍了使用FutureTask结合线程池轻松解决接口超时问题的巧妙用法,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-11-11
  • Java使用反射来获取泛型信息示例

    Java使用反射来获取泛型信息示例

    这篇文章主要介绍了Java使用反射来获取泛型信息,结合实例形式分析了java基于反射操作泛型信息的相关实现技巧与注意事项,需要的朋友可以参考下
    2019-07-07
  • Mybatis分页PageHelper插件代码实例

    Mybatis分页PageHelper插件代码实例

    这篇文章主要介绍了Mybatis分页PageHelper插件代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-12-12
  • 剑指Offer之Java算法习题精讲二叉树的构造和遍历

    剑指Offer之Java算法习题精讲二叉树的构造和遍历

    跟着思路走,之后从简单题入手,反复去看,做过之后可能会忘记,之后再做一次,记不住就反复做,反复寻求思路和规律,慢慢积累就会发现质的变化
    2022-03-03
  • SpringBoot中整合MyBatis-Plus的方法示例

    SpringBoot中整合MyBatis-Plus的方法示例

    这篇文章主要介绍了SpringBoot中整合MyBatis-Plus的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09

最新评论