目录
介绍
附加功能
如何安装 mvnd
使用SDKMAN安装!
使用Homebrew安装
使用MacPorts安装
使用Chocolatey安装
设置完成
oh-my-zsh 用户注意事项
手动安装
用法
mvnd 具体选项
配置
mvnd从源代码构建
mvnd源码
先决条件:
建造 mvnd
安装 mvnd
介绍
该项目旨在使用 Gradle 和 Takari 已知的技术提供更快的Maven构建。
架构概述:
- mvnd 嵌入了Maven(所以不需要单独安装Maven)。
- 实际的构建发生在一个长期存在的后台进程中,也就是守护进程。
- 一个守护进程实例可以为来自mvnd客户端的多个连续请求提供服务。
- 该mvnd客户端是使用内置本地可执行GraalVM。与启动传统 JVM 相比,它启动速度更快,使用的内存更少。
- 如果没有空闲守护程序来处理构建请求,则可以并行生成多个守护程序。
- 这种架构带来了以下优势:
- 用于运行实际构建的 JVM 不需要为每个构建重新启动。
- 持有 Maven 插件类的类加载器缓存在多个构建中。因此,插件 jars 只被读取和解析一次。SNAPSHOT 版本的 Maven 插件不会被缓存。
- JVM 中的实时 (JIT) 编译器生成的本机代码也被保留。与库存 Maven 相比,JIT 编译花费的时间更少。在重复构建期间,JIT 优化代码立即可用。这不仅适用于来自 Maven 插件和 Maven Core 的代码,也适用于来自 JDK 本身的所有代码。
mvnd 在库存 Maven 之上带来以下功能:
- 默认情况下,mvnd使用多个 CPU 内核并行构建模块。使用的核心数由公式给出Math.max(Runtime.getRuntime().availableProcessors() - 1, 1)。如果您的源代码树不支持并行构建,请传递-T1命令行以使您的构建串行。
- 改进的控制台输出:我们认为在股票 Maven 上并行构建的输出很难理解。因此,我们实现了一个简化的非滚动视图,在单独的行上显示每个构建线程的状态。这是在具有 24 个内核的机器上的样子:
构建完成后,完整的 Maven 输出将转发到控制台。
如何安装 mvnd使用SDKMAN安装!
如果 SDKMAN!支持您的 *** 作系统,就这么简单
$ sdk 安装 mvnd
如果您过去使用手动安装,请确保设置~/.m2/mvnd.properties仍然有效。随着SDKMAN!上~/.m2/mvnd.properties通常没有必要的文件,因为两者JAVA_HOME并 MVND_HOME用SDKMAN的管理!
$ brew install mvndaemon/homebrew-mvnd/mvnd
使用MacPorts安装
$ sudo 端口安装 mvnd
使用Chocolatey安装
$ choco 安装 mvndaemon
设置完成
或者,您可以按如下方式设置完成:
#确保将 MVND_HOME 设置为指向您的 mvnd 发行版,请注意 sdkman 会为您执行此 *** 作 $ echo ' source $MVND_HOME/bin/mvnd-bash-completion.bash ' >> ~ /.bashrc
bash 是目前唯一支持的 shell。
使用的用户oh-my-zsh经常使用maven的补全。默认的 maven 完成插件定义mvnd为mvn deploy. 因此,在能够使用之前mvnd,您需要使用以下命令取消别名:
$ unalias mvnd
手动安装
- 从https://github.com/mvndaemon/mvnd/releases下载适合您平台的最新 ZIP
- 解压到您选择的目录
- 将bin目录添加到PATH
- 或者,您可以创建~/.m2/mvnd.properties和设置java.home属性,以防您不想设置JAVA_HOME环境变量。
- 测试是否mvnd有效:
$ mvnd --version Maven 守护进程 0.0.11-linux-amd64(本机) 终端:org.jline.terminal.impl.PosixSysTerminal with pty org.jline.terminal.impl.jansi.osx.OsXNativePty Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f) Maven 主页:/home/ppalaga/orgs/mvnd/mvnd/daemon/target/maven-distro Java 版本:11.0.1,供应商:AdoptOpenJDK,运行时:/home/data/jvm/adopt-openjdk/jdk-11.0.1+13 默认语言环境:en_IE,平台编码:UTF-8 *** 作系统名称:“ linux ”,版本:“ 5.6.13-200.fc31.x86_64 ”,arch:“ amd64 ”,系列:“ unix ”
如果您使用的是 Windows 并看到一条消息VCRUNTIME140.dll was not found,您需要vc_redist.x64.exe从https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads进行安装 。有关更多信息,请参阅https://github.com/oracle/graal/issues/1762。
mvnd旨在接受相同的命令行选项,如股票mvn(加上一些额外的 - 见下文),例如:
mvnd 全新安装
mvnd 具体选项
- --status 列出正在运行的守护进程
- --stop 杀死所有正在运行的守护进程
- 执行时会打印完整的选项列表mvnd --help。
可以通过属性文件提供配置。Mvnd 从以下位置读取属性文件:
- 使用MVND_PROPERTIES_PATH环境变量或mvnd.propertiesPath系统变量提供的属性路径
- 本地属性路径位于 [PROJECT_HOME]/.mvn/mvnd.properties
- 用户属性路径位于: [USER_HOME]/.m2/mvnd.properties
- 系统属性路径位于: [MVND_HOME]/conf/mvnd.properties
在第一个文件中定义的属性将优先于在较低级别文件中指定的属性。
一些特殊属性不遵循上述机制:
- mvnd.daemonStorage:此属性定义了 mvnd 存储其文件(注册表和守护进程日志)的位置。该属性只能在命令行中定义为系统属性
- mvnd.id: 此属性在内部用于标识正在创建的守护进程
- mvnd.extClasspath: 指定 maven 扩展类路径的内部选项
- mvnd.coreExtensions: 指定要注册的 Maven 扩展列表的内部选项
有关可用属性的完整列表,请参阅 /dist/src/main/distro/conf/mvnd.properties。
mvnd从源代码构建 mvnd源码先决条件:
- git
- 马文
- 从GitHub下载并解压 GraalVM CE
- 设置JAVA_HOME为您在上一步中解压 GraalVM 的位置。检查java -version输出是否符合预期:
$ $JAVA_HOME /bin/java -version openjdk 版本“ 11.0.9 ” 2020-10-20 OpenJDK 运行时环境 GraalVM CE 20.3.0(构建 11.0.9+10-jvmci-20.3-b06) OpenJDK 64-Bit Server VM GraalVM CE 20.3.0(build 11.0.9+10-jvmci-20.3-b06,混合模式,共享)
- 安装native-image工具:
$ $JAVA_HOME /bin/gu 安装本机映像
- native-image根据您的平台,可能需要安装其他软件 - 请参阅 native-image文档。
$ git clone https://github.com/mvndaemon/mvnd.git $ cd mvnd $ mvn clean verify -Pnative ... $ cd客户端 $文件目标/mvnd 目标/ mvnd:ELF 64位LSB的可执行文件,X86-64,版本1(SYSV),动态链接的,解释器/lib64/ld-linux-x86-64.so.2,BuildID [SHA1] = 93a554f3807550a13c986d2af9a311ef299bdc5a,用于GNU / Linux 3.2.0,带有 debug_info,未剥离 $ ls -lh 目标/mvnd -rwxrwxr-x。1 ppalaga ppalaga 25M Jun 2 13:23 target/mvnd
安装 mvnd
$ cp -R dist/target/mvnd-[版本] [目标目录]
然后你可以简单地运行 add [target-dir]/binto your PATHand run mvnd。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)