我正在使用 Gradle 的应用程序插件来生成独立 Java 应用程序的安装。我有一个需要放在类路径中的配置文件,但我似乎无法让它在 sh/bat 文件中正确生成类路径。此配置文件需要位于 jar 之外。
conf 文件位于 /src/dist/conf/
目录中,因此当我运行 installApp
时,它会将其安装在像这样 $APP_HOME 的 conf 目录下/conf
.
我尝试像这样将此目录添加到 claspath:
startScripts.classpath.add(files('$APP_HOME/conf'))
但是当我查看 sh/bat 文件中的类路径时,它会添加一个如下所示的条目:
$APP_HOME/lib/conf
如何告诉 gradle 删除该条目的 lib
部分?
最佳答案
Alexandr Fadeev GRADLE-2333 提出了针对此问题 (here) 的另一种解决方法.
这是(稍作修改)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)。
https://stackoverflow.com/questions/10518603/