java - 使用 Gradle 的 Application 插件添加类路径条目

我正在使用 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/

相关文章:

haskell - 平行 cabal

build - CMake:如何最好地构建多个(可选)子项目?

gcc - 如何构建 MinGW W64

ios - 如何使用 watchkit 应用程序从命令行生成 .ipa 文件

build - Unix : fast 'remove directory' for cleanin

c++ - 将 CMake 与同一语言的多个编译器一起使用

ios - asm中的未知寄存器名称 'q0'

c - 去 1.5+ : Error - imports runtime: C source fil

visual-studio - Visual Studio 可以在构建日志中添加时间戳吗?

c++ - 如何强制 clang 默认使用某些库?