2012-08-23 38 views
1

我正在寻找一种简单的方法来编写调用jar文件的短shell脚本。 必须跟踪(并安装)运行时类路径的所有jar文件部分地使用脚本(而不是在Eclipse中构建可运行jar文件)破坏了目的。我希望Maven(或者其他类似的东西)来管理这个。基于JVM的脚本语言与Maven依赖关系解析

图片:

#!/usr/bin/the-cool-shell 

use org.apache.commons/lang/3.0.0 
use org.json/json 

import org.json.*; 

new JSONObject("{}"); 

,这应该(下载它在第一时间之后基本为零的开销)自动从Maven的所需的构件。

我有什么选择?

回答

3

如果您使用的是Groovy和Groovy Shell,则可以使用Grape基础结构。

#!/usr/bin/env groovy 

@Grab('log4j:log4j:1.2.14') 
import org.apache.log4j.Level 
import org.apache.log4j.Logger 

def logger = Logger.getLogger(GroovyShell.class) 
Logger.rootLogger.level = Level.INFO 

logger.info 'I am using the Log4j library by using Grape' 

至于你确切的例子,这会工作:

#!/usr/bin/env groovy 

@Grapes([ 
    @Grab('org.apache.commons:commons-lang3:3.0'), 
    @Grab('org.json:json:20090211') 
    ]) 
import org.json.* 

new JSONObject('{}') 

在这种情况下,我将使用Groovy语法,但普通的Java语法也未尝不可。


@Grapes标注的Javadoc措施:

有时我们需要每类不止一个抢,但我们只能添加每加注的节点 一个注释类型。这个类允许添加多个 抓取。

+0

看起来很整齐。这是Groovy的一部分,还是我需要安装其他任何东西? – Thilo

+0

不,只是在某些目录(例如'/ opt/groovy')中安装Groovy,确保'bin'目录在你的路径中,然后运行'groovy json.groovy'。 – maba

+0

“@ Grapes”注释是否可以解决不能拥有多个'@ Grab'的情况呢? – Thilo

1

您可以尝试Gradle,它是一个构建管理工具,但它使用Groovy作为其构建脚本,并且它使用Maven依赖关系模型。所以你的脚本可能是一个Gradle'build'脚本,它只是做了一些与构建软件不同的东西。