4

我编写了一个依赖于 SQL Server 驱动程序 (sqljdbc4.jar) 的 Groovy 脚本。我可以使用 GroovyWrapper(下面的链接)将其编译为 JAR,但是如何将依赖项放入 Jar?我正在寻找一种“最佳实践”之类的东西。

https://github.com/sdanzan/groovy-wrapper

下面的两个回复都很有帮助,但是我怎样才能为签名的 Jar 文件做到这一点?例如:

线程“main”中的异常 java.lang.SecurityException:Manifest 主要属性的签名文件摘要无效

4

2 回答 2

6

在 groovy 包装脚本中,您会在底部附近看到这一行:

// add more jars here

您可以在此处添加依赖项。如果 jar 文件位于您正在构建的同一目录中,请添加如下行:

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

然后重新运行脚本,您的 jar 将包含来自sqljdbc4.jar.

编辑:

如果您依赖的 jar 文件已签名并且您需要维护签名,则必须保留外部 jar。如果不使用自定义类加载器,则不能在其他 jar 文件中包含 jar 文件。但是,您可以在清单中指定依赖项以避免必须设置类路径,即您的 jar 仍然可以使用java -jar myjar.jar. 将包装脚本中的清单部分更新为:

manifest {
    attribute( name: 'Main-Class', value: mainClass )
    attribute( name: 'Class-Path', value: 'sqljdbc4.jar' )
}
于 2013-09-24T16:36:34.617 回答
1

从您的链接中,如果您查看GroovyWrapper脚本的源代码,则有这一行:

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

我会在那里明确添加它。

于 2013-09-24T16:35:51.993 回答