在SBT中引入JRebel

来源:互联网 发布:win10怎么查mac地址 编辑:程序博客网 时间:2024/04/29 23:19

问题引入

   由于刚接触Scala, Lift, 所以私下尝试用SBT搭建了一个基于LiftWeb的的Web项目, 主要是方便自己熟悉Lift的使用。

   刚开始的时候启动SBT时设置的命令 ~; container:start; container:reload /  这样的话SBT就能监控你的代码变化, 并且reload项目。 刚开始用着挺好的, 但是后来做一个登录功能时, 需要保持登录状态并进行相应的操作。但是由于之前的命令设定, 修改之后会reload整个项目, session就被清除了。  

   所以需要动态编译,但不是每次都reload项目。由于公司做项目的时候直接在Eclipse中引入了JRebel, 所以想尝试着将JRebel引入SBT。


解决方法

1、注册JRebel, 获取免费的Scala License

      由于JRebel并不是免费使用的, 但是针对Scala有一年的免费使用权限。 

<一> 到该网站https://my.jrebel.com/plans注册,登录。并进行相应的申请, 然后在https://my.jrebel.com/account/how-to-activate页面将你的License Code 复制一下

<二> 到该网站http://zeroturnaround.com/software/jrebel/download/prev-releases/下载 zip版的JRebel文件 

      解压后到Bin目录里面去找一个activate-gui.sh文件 打开, 将License Code按照指示黏贴到相应的地方。实际上就是本地验证JRebel使用权限(只不过是通过图形化的方式验证, 好像还可以使用命令行的方式进行)。 

2、在项目的sbt.bat中进行相应的配置

set SCRIPT_DIR=%~dp0

java -Drebel.lift_plugin=true -noverify -javaagent:path -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=256m -Xmx1024M -Xss2M -jar"%SCRIPT_DIR%sbt-launch.jar" %*

path 就是JRebel.zip中的那个jrebel.jar的位置,你可以解压JRebel.zip之后将其放在任意位置, 比如说放在D盘中则path的值应为D:/jrebel.jar

注意java -Drebel.lift_plugin... 那一行不要换行,在一行写完,否则在命令行中会当成两条命令来执行从而出错

3、通过sbt.bat启动SBT, 然后通过container:start启动jetty就行了

 

一点思考

  公司项目是用的Maven作为项目管理的, 现在pom.xml已经很大了。自己在SBT的build.sbt也配置过jar包, 感觉比maven的写法更简洁。当然本身接触maven也不是太深。另外有时觉得太依赖Eclipse了, 所以有机会可以多尝试用文本编辑器配合SBT进行开发, 从某种程度上可以提高自己对于代码的理解。当然这仅仅是限于自己私下做着玩。


参考资料

 《Lift CookBook》中详细的讲到了如何引入JRebel以及如何在Eclipse中引入SBT项目, 作为尽快上手Lift的书籍是个不错的选择。


   最后, 自己使用SBT也不是很多, 写这篇文章只是因为自己配置的时候花了很多时间, 希望能帮助需要的人。如有错误, 欢迎批评指正。





 


0 0