[jruby] warbler 配置问题说明
程序员文章站
2022-07-14 22:25:44
...
这篇blog是整理给自己看的,因为一年前解决过一个问题,结果时间一长居然忘了,今天重新解决了一遍,自己汗一下
warbler是一个打包工具,可以将rails应用打包为war,使用如下:
$ gem install warbler # 安装 $ cd your_rails_app $ warbler #使用
然后你就可以在你的rails项目下看到一个war文件了,非常简单
好的开源项目应该既方便又强大,warber也基本符合这个要求,它可以定制自己的打包参数,你可以在rails项目中生成缺省配置文件,然后按照你的特别要求修改配置文件:
warble config # then you can edit config file whose path is config/warble.rb
ruby的配置文件本身就是ruby代码,这里面有注释,就不解释了,值的说明的是这几行
# Loose Java classes and miscellaneous files to be included. # config.java_classes = FileList["target/classes/**.*"] # One or more pathmaps defining how the java classes should be copied into # the archive. The example pathmap below accompanies the java_classes # configuration above. See http://rake.rubyforge.org/classes/String.html#M000017 # for details of how to specify a pathmap. # config.pathmaps.java_classes << "%{target/classes/,}p"
注释里写的很清楚,打包工具需要解决两个问题:
- 打包的文件来自哪里;
- 打包时,文件放到哪个目录下,文件名是什么;
这两个问题在config中是分开设置的,一个是 java_classes ,第二个是 pathmaps.java_classes ,所以你可以设置好前一个路径,然后用后一个的正则表达式改成你需要的war中的位置
比如在 java_side 中,我设定的 spring 配置文件在 java/conf 目录下,这些文件应该直接copy到 WEB-INF/classes 中,于是可以这么设定:
config.java_classes = FileList["java/conf/**/*"] config.pathmaps.java_classes << "%{java/conf/,}p"
同理,其它的路径也有对应的 pathmaps 可以设置,仔细看看就知道
另外,借助ruby的动态特性,我们也可以用插件进行设置增强
这块的相关的代码是在下面的文件中:
$JRUBY_HOME/gems/warbler-1.3.0/lib/warbler/config.rb $JRUBY_HOME/gems/warbler-1.3.0/lib/warbler/traits/war.rb
有兴趣的同学可以看看