JRuby项目结构和jar创建

时间:2014-12-30 23:59:50

标签: ruby jruby

我必须为我的项目创建一个JRuby jar文件。下面我提供了有关我的目录结构和文件的详细信息。

  1. 顶级目录 - Project1
  2. Project1下 - 我有bin, lib, src个文件夹
  3. Project1/bin下方 - 我有wrapper shell script我来自jruby jar的地方。
  4. Project1/lib下 - 我有jruby-complete-1.6.7.2.jarojdbc6.jar
  5. Project1/src下 - 我有libtool个文件夹
    • Project1/src/lib下 - 我有main.rb个文件和util文件夹
    • Project1/src/lib/util下 - 我2-ruby scripts已调用main.rb
  6. Project1/src/tool下 - 我从Tool.java开始main.rb
  7. 现在我有几个问题 -

    1. 我是否需要捆绑我在ruby脚本中使用的所有gem(例如:colorizesocketnet/ssh等?)

    2. 如何创建JRuby jar?在发布我的问题之前,我在stackoverflow上看到了以下posts,但我感到困惑,有点无法弄清楚从哪里开始。请提供一些指导。

1 个答案:

答案 0 :(得分:0)

以下是将所有宝石捆绑到jruby-complete.jar中的步骤。

  1. http://jruby.org/download下载jruby-complete-latest_version.jar。

  2. 确认下载的jar中包含哪些宝石,例如java -jar jruby-complete-latest_version.jar -S gem list

  3. 要将gems推送到jruby-complete-latest_version.jar,您需要检查该gem所需的所有运行时依赖性。示例:对于net-scp,您需要先下载net-ssh gem。

  4. 使用以下命令在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

  5. 现在使用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 .

  6. 检查jar文件的gem列表,确保成功添加所有gem java -jar jruby-complete-latest_version.jar -S gem list

  7. 上次检查以确保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

  8. 我在jruby-complete_latest_version.jar下面有lib文件后,我使用ANT为我的项目构建了jar。

    此解决方案同样适用于较小的项目。对于大型项目,Warbler将是@joelparkerhenderson建议的最佳选择。