2012-08-23 68 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'腳本,它只是做了一些與構建軟件不同的東西。