2013-09-24 51 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 

我明确地在那里添加它。