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

Jos*_*osh 20 java build gradle

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

conf文件位于目录中,/src/dist/conf/因此当我运行installApp它时,将它安装在这样的conf目录下$APP_HOME/conf.

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

startScripts.classpath.add(files('$APP_HOME/conf'))
Run Code Online (Sandbox Code Playgroud)

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

$APP_HOME/lib/conf
Run Code Online (Sandbox Code Playgroud)

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

neh*_*aev 15

这个问题的另一个解决方法(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')
  }
}
Run Code Online (Sandbox Code Playgroud)

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


Jos*_*osh 3

在我看来,我想做的事情不应该那么不寻常,但作为一种解决方法,我可以让目录dist允许src/dist/lib/confconf目录放置在lib目录中以及 gradle 生成的类路径中sh/bat 文件正确。

如果有人有更好的答案,我会接受另一个答案。