我必须为我的项目创建一个JRuby jar文件。下面我提供了有关我的目录结构和文件的详细信息。
Project1
Project1
下 - 我有bin, lib, src
个文件夹Project1/bin
下方 - 我有wrapper shell script
我来自jruby jar
的地方。Project1/lib
下 - 我有jruby-complete-1.6.7.2.jar
和ojdbc6.jar
Project1/src
下 - 我有lib
和tool
个文件夹
Project1/src/lib
下 - 我有main.rb
个文件和util
文件夹Project1/src/lib/util
下 - 我2-ruby scripts
已调用main.rb
。Project1/src/tool
下 - 我从Tool.java
开始main.rb
。现在我有几个问题 -
我是否需要捆绑我在ruby脚本中使用的所有gem(例如:colorize
,socket
,net/ssh
等?)
如何创建JRuby jar?在发布我的问题之前,我在stackoverflow上看到了以下posts,但我感到困惑,有点无法弄清楚从哪里开始。请提供一些指导。
答案 0 :(得分:0)
以下是将所有宝石捆绑到jruby-complete.jar中的步骤。
从http://jruby.org/download
下载jruby-complete-latest_version.jar。
确认下载的jar中包含哪些宝石,例如java -jar jruby-complete-latest_version.jar -S gem list
。
要将gems推送到jruby-complete-latest_version.jar,您需要检查该gem所需的所有运行时依赖性。示例:对于net-scp
,您需要先下载net-ssh
gem。
使用以下命令在jruby-complete-latest_version.jar所在的同一目录下下载宝石:
java -jar jruby-complete-latest_version.jar -S gem install -i ./net-ssh net-ssh --no-rdoc --no-ri
java -jar jruby-completelatest_version.jar -S gem install -i ./net-scp net-scp --no-rdoc --no-ri
现在使用ruby-complete-latest_version.jar
选项为jar文件添加update file (uf)
内的gem。例:
jar uf jruby-complete-latest_version.jar -C net-ssh .
jar uf jruby-complete-latest_version.jar -C net-scp .
检查jar文件的gem列表,确保成功添加所有gem
java -jar jruby-complete-latest_version.jar -S gem list
上次检查以确保gems成功加载,在require
上运行irb
语句。
java -jar jruby-complete-latest_version.jar -S irb
irb(main):001:0> require 'rubygems'
=> true
irb(main):002:0> require 'net/scp'
=> true
我在jruby-complete_latest_version.jar
下面有lib
文件后,我使用ANT为我的项目构建了jar。
此解决方案同样适用于较小的项目。对于大型项目,Warbler将是@joelparkerhenderson建议的最佳选择。