【问题标题】:Gradle - add directory to classpathGradle - 将目录添加到类路径
【发布时间】:2016-06-03 09:26:13
【问题描述】:

当我的应用程序在目录下查找配置文件时,我的应用程序要求类路径中有一个\config 目录可用。我目前有这样配置的依赖项,尽管这可能不是使目录对我的应用程序可用的正确方法:

dependencies {
    ... //runtime, compile dependencies pulled from repositories
    runtime files('config')
}

我正在使用 application 插件为我的项目创建一个独立的 zip。如果我的\config 目录有\config\subdirfile1file2,那么插件会生成一个build\install 目录,其结构如下:

| build
| --|install
| ----|bin
| ------ projectName
| ------ projectName.bat
| ----|lib
| ------ dependency1.jar
| ------ dependency2.jar
| ------|subdir
| ------ file1
| ------ file2

这不适用于我的应用程序,因为它明确需要 \config 目录

但是,这是我需要的目录结构:

| build
| --|install
| ----|bin
| ------ projectName
| ------ projectName.bat
| ----|lib
| ------ dependency1.jar
| ------ dependency2.jar
| ----|config
| ------|subdir
| ------ file1
| ------ file2

如何让 gradle 向构建中添加另一个目录并将其指定为生成的启动脚本的类路径的一部分?

【问题讨论】:

  • 您的配置文件夹在源目录中的什么位置?如果它在src/main/resources 我想应用程序插件也会打包它
  • 它不在源目录中。它位于项目根文件夹中。应该搬家吗?
  • 如何将它添加到类路径中?是的,我建议将其移至 /src/dist,如下所示。
  • 我尝试将配置文件夹移动到src/main/resources,但我的应用程序没有选择它。我做错了什么?

标签: java gradle classpath build.gradle


【解决方案1】:

应用插件documentation 说:

要添加到发行版的静态文件可以简单地添加到 src/dist

我会尝试将您的配置目录放入 src/dist/lib 并继续使用 runtime files('src/dist/lib/config') 将其添加到您的类路径中

注意:解决this defect意味着配置必须进入/libsrc/dist

【讨论】:

  • 我试过这种方法。我现在可以获得我在问题中描述的第二个目录结构,但生成的脚本中的类路径仍然不正确。它将类路径定义为set CLASSPATH=%APP_HOME%\lib\config,而它应该是set CLASSPATH=%APP_HOME%\config。我怎样才能做到这一点?
  • 如果我手动将生成的脚本配置为set CLASSPATH=%APP_HOME%\config,我的应用程序可以正常工作,但这绝对不理想。我不应该编辑构建输出,对吧?
  • 叹气,看起来你遇到了这个问题:issues.gradle.org/browse/GRADLE-2991 不,你不应该在构建之后手动编辑任何脚本。我能想到的最简单的解决方法是将您的配置文件夹放在/src/dist/lib
【解决方案2】:

你可以试试这个:

project('project-name') {
   apply plugin: 'application'
   mainClassName = "your.main.Class"

   startScripts {
       classpath += files('src/dist/lib/conf')
   }

更多信息可以在here找到。

【讨论】:

    【解决方案3】:
    jar {
        manifest {
            attributes('Class-Path' : '<directory>' )
        }
    }
    

    以上对我有用

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-16
      • 1970-01-01
      相关资源
      最近更新 更多