JRuby项目源码构建与开发指南
jruby JRuby, an implementation of Ruby on the JVM 项目地址: https://gitcode.com/gh_mirrors/jr/jruby
前言
JRuby作为Ruby语言在JVM平台上的实现,其构建过程与传统Ruby解释器有所不同。本文将全面介绍如何从源码构建JRuby项目,包括环境准备、构建流程、测试方法以及发布打包等关键环节。
环境准备
在开始构建JRuby之前,需要确保开发环境中已安装以下工具:
-
Java开发工具包:需要Java 8或更高版本
- 在Mac OS X上,如果未设置JAVA_HOME环境变量,可执行:
export JAVA_HOME=$(/usr/libexec/java_home)
- 在Mac OS X上,如果未设置JAVA_HOME环境变量,可执行:
-
构建工具:
- Maven 3.3.0+(项目已提供Maven Wrapper,可通过
./mvnw
使用) - Apache Ant 1.8+
- Maven 3.3.0+(项目已提供Maven Wrapper,可通过
-
编译工具:
- Make工具
- C++编译器(用于编译jruby-launcher gem)
基础构建流程
首次构建
首次从源码构建JRuby时,需要生成核心的lib/jruby.jar
文件。执行以下命令:
./mvnw
此命令会执行Maven的默认"install"目标,完成以下工作:
- 编译JRuby核心代码
- 构建
lib/jruby.jar
(命令行运行必需) - 安装默认gem规范到
lib/ruby/gems/shared/specifications/default/
- 将相关gem的Ruby文件安装到
lib/ruby/stdlib/
构建完成后,环境即可运行Ruby应用程序。
增量构建
开发过程中,如果只修改了Java源码,可以仅重新构建核心jar文件以节省时间:
./mvnw -Dcore
运行JRuby
构建完成后,可通过以下方式运行JRuby:
bin/jruby
如果jruby-launcher
gem安装成功,这将是一个平台相关的原生可执行文件;否则会使用bin/jruby.sh
shell脚本。
RubyGems默认已安装,可通过以下方式使用:
bin/gem
或者通过JRuby显式调用:
jruby -S gem ...
开发与测试
开发环境准备
在开始开发前,需要引导开发环境:
mvn -Pbootstrap
如果遇到jruby-launcher编译问题,可使用:
mvn -Pbootstrap-no-launcher
日常测试
推荐运行Ruby specs进行日常测试:
./bin/jruby -S rake spec:ruby:fast
更全面的测试可运行MRI测试套件:
./bin/jruby -S rake test:mri
运行单个测试文件
./bin/jruby test/mri/runner.rb test/mri/<测试路径>
排除已知失败测试
./bin/jruby test/mri/runner.rb --excludes=test/mri/excludes <测试文件>
Java单元测试
如果修改了JRuby核心运行时或嵌入API,应运行Java单元测试:
mvn -Ptest
构建清理
基本清理
mvn clean
注意:这只会清理jruby-core构件和./lib/jruby.jar
完全清理
mvn -Pclean
发布打包
标准发行包(tar.gz/zip)
./mvnw -Pdist
生成文件位于./maven/jruby-dist/target
jruby-complete.jar
./mvnw -Pcomplete
生成文件位于./maven/jruby-complete/target
Maven构件
./mvnw -Pmain
构件将安装到本地Maven仓库
JRuby Jars gem
./mvnw -Pjruby-jars
gem包位于./maven/jruby-jars/pkg
构建所有包
./mvnw -Pall
发布流程
- 修改根目录下的
VERSION
文件设置新版本号 - 执行发布命令:
./mvnw clean deploy -Psonatype-oss-release
-
完成后需要到Sonatype OSS界面进行最终确认和发布
-
发布完成后,更新
VERSION
文件中的开发版本号,并重新生成pom文件:
./mvnw
结语
本文详细介绍了JRuby项目的构建、开发和测试流程。作为Ruby在JVM上的实现,JRuby的构建系统结合了Java生态的工具链(Maven、Ant)和Ruby生态的测试框架(RSpec、MSpec),开发者需要熟悉这两套工具才能高效地进行JRuby开发。
jruby JRuby, an implementation of Ruby on the JVM 项目地址: https://gitcode.com/gh_mirrors/jr/jruby
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考