使用 Gradle 的应用程序插件添加类路径条目

2022-09-02 01:23:57

我正在使用Gradle的应用程序插件来生成独立java应用程序的安装。我有一个配置文件,我需要放在类路径上,但我似乎无法让它在sh / bat文件中正确生成类路径。此配置文件需要位于 jar 外部。

conf文件在目录中,因此当我运行时,它会将其安装在conf目录下,如下所示。/src/dist/conf/installApp$APP_HOME/conf

我尝试将此目录添加到 claspath 中,如下所示:

startScripts.classpath.add(files('$APP_HOME/conf'))

但是当我查看sh / bat文件中的类路径时,它会添加一个如下所示的条目:

$APP_HOME/lib/conf

如何告诉 gradle 删除此条目的部分?lib


答案 1

这个问题的另一个解决方法(GRADLE-2333)是由Alexandr Fadeev在这里提出的。

以下是(有点修改)Alexandr的解决方案,在Gradle-1.6上为我解决了这个问题:

startScripts {
  classpath += files('src/dist/XxxAPlaceHolderForAConfigxxX')
  doLast {
    def windowsScriptFile = file getWindowsScript()
    def unixScriptFile    = file getUnixScript()
    windowsScriptFile.text = windowsScriptFile.text.replace('%APP_HOME%\\lib\\XxxAPlaceHolderForAConfigxxX', '%APP_HOME%\\config')
    unixScriptFile.text  = unixScriptFile.text.replace('$APP_HOME/lib/XxxAPlaceHolderForAConfigxxX', '$APP_HOME/config')
  }
}

它比Josh的解决方案更丑陋,但它允许您保留原始问题中提到的确切目录布局(/src/dist/conf和$APP_HOME/conf)。


答案 2

将文件放到类路径上的最简单方法是将其放入 。 用于将文件添加到分发(即.zip文件),而不是添加到 Jar/类路径。src/main/resourcessrc/dist


推荐