一个更好Java Shell 脚本包装

2014-11-24 10:44:13 ? 作者: ? 浏览: 0

在许多Java工程中,经常会看到带有程序自定义参数调用Java命令的包装shell脚本。例如,


编写这些包装脚本很无聊而且容易出错。大多数的问题来自为程序设置正确的classpath。如果你正在为一个公司开发内部项目的话,那么你有可能远离纠结的路径以及环境变量问题。但是对于开源项目,人们需要使包装更加灵活和通用。大多数甚至提供了.bat版本。Windows DOS确实是个野蛮且被限制的终端而不能很好的满足你项目脚本需求。因此,我常鼓励别人尽量还是多使用Cygwi。至少它具备一个真实的bash shell。其他常见的问题就是这些包装很快就会失去控制而且在你的项目各处都会出现很多冗余脚本。


run-java包装脚本介绍


如果你看到 $TIMEMACHINE_HOME/bin/scheduler.sh 的代码,你会看到它其实是在同目录下循环调用run-java脚本。


正如你看到的,我们的 run-java 可以使用 -D 选项,不仅这样,它同样也能使用 -cp 选项!而且,你还能在main class后面指定这些选项!这样能够使得run-java被其他的脚本包装,并且仍旧能够添加额外的系统属性以及classpath。


例如,TimeMachine 附带了 Groovy 库,所以你可以简单的像这样调用


你可以很方便地在任何目录下使用,它确认自己的目录然后可以自动加载lib目录下的任何jar包。现在如果你想要附加更多的jar包来运行Groovy的话,可以如下使用 -cp 选项:


通常如果你设置java classpath不够小心时会经常导致错误,但是使用 run-java 可以预先运行一次:


run-script还包含很多其它的选项,你可以通过查看其注释了解。当前的脚本能够在任何的Linux bash和Windows Cygwin中运行。


在开发中通过Maven使用 run-java


根据上面提到的示例,假设项目发布结构如下:


但是在开发过程中目录会是怎样呢?一个常见的用例便是:你希望能够运行target/classes下最新编译的代码而不是将整个项目打包或者发布。你同样可以在此种情况下使用 run-java 。首先,简单的将 bin/run-java 添加进你的项目,然后运行


如果你使用Eclipse来开发,那么你的target/classes目录将总是在更新的,run-java便能成为你项目开发中的瑰宝。


获取 run-java 包装脚本


-->

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: