2013-09-24 112 views
4

我已經編寫了一個Groovy腳本,它具有對SQL Server驅動程序(sqljdbc4.jar)的依賴關係。我可以使用GroovyWrapper(下面的鏈接)將它編譯成一個JAR,但是我怎麼能依賴到Jar?我正在尋找一種「最佳做法」。Groovy - 如何構建罐子

http://groovy.codehaus.org/WrappingGroovyScript

的答覆下面有幫助的兩個,但我怎麼能做到這一點的簽署Jar文件?例如:

異常線程「main」 java.lang.SecurityException異常:無效的簽名文件d igest對艙單主要屬性

回答

6

在常規包裝腳本,你會看到這條線附近的底部:

// add more jars here 

這就是你可以添加你的依賴。如果jar文件是你從建築的同一目錄下,添加這樣一行:

zipgroupfileset(dir: '.', includes: 'sqljdbc4.jar') 

然後重新運行腳本,你的罐子將包括sqljdbc4.jar類。

編輯:

如果你依賴於jar文件進行簽名,你需要保持簽名,你必須保持外部罐子。不能使用自定義類加載器將jar文件包含在其他jar文件中。但是,您可以在清單中指定依賴項,以避免設置類路徑,即您的jar仍可執行java -jar myjar.jar。更新包裝腳本中的清單部分到:

manifest { 
    attribute(name: 'Main-Class', value: mainClass) 
    attribute(name: 'Class-Path', value: 'sqljdbc4.jar') 
} 
+0

嗯我回到一個類未發現異常。 SQL jar必須在這裏起作用,我把它放在同一個目錄中,並且如上所示更新了清單。 – Steve

+0

SQL jar的路徑應該與您的應用程序jar相關。如果你在類路徑中指定了多個位置,它們應該用命令行中的空格分隔,而不是';'或':'。 – ataylor

1

從你的鏈接,如果你看一下GroovyWrapper源腳本,有這條線:

zipgroupfileset(dir: GROOVY_HOME, includes: 'embeddable/groovy-all-*.jar') 
zipgroupfileset(dir: GROOVY_HOME, includes: 'lib/commons*.jar') 
// add more jars here 

我明確地在那裏添加它。