1

我正在寻找一种简单的方法来编写调用 jar 文件的简短 shell 脚本。必须为运行时类路径跟踪(并安装)所有这些 jar 文件,这在一定程度上违背了使用脚本的目的(与在 Eclipse 中构建可运行的 jar 文件相反)。我希望 Maven(或类似的东西)来管理这个。

图片:

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

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

 import org.json.*;

 new JSONObject("{}");

这应该会自动从 Maven 获取所需的工件(第一次下载后开销基本上为零)。

我有哪些选择?

4

2 回答 2

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:

有时每个类需要多个抓取,但我们只能为每个可注释节点添加一种注释类型。此类允许添加多个抓取。

于 2012-08-23T08:27:26.860 回答
1

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

于 2012-08-23T08:06:30.983 回答