当前位置: 首页 > 知识库问答 >
问题:

使用conf文件夹分级构建文件,其属性不在jar中,而是在类路径上

姬锐
2023-03-14

请与配置的文件夹“conf”共享一个build.gradle脚本示例:

    null

我从头开始了示例项目,在@wakjah的帮助下,现在我有了:

  1. 请求#1:ok(目录config包含资源文件),但此资源也在lib文件夹中。
  2. 请求#2:ok(目录config在启动脚本中的类路径上),但类路径还包含无效的文件夹%App_Home%\lib\config
  3. 请求#3:确定

此外,我测试了3种加载文件内容的方法(如本文所述),方法Thread.CurrentThread().GetContextClassLoader().GetResource(name)成功。

在这里添加了我的示例项目zip文件:http://rgho.st/8r2djjsz7

附加3:

当我在gradle脚本中注释/删除时:

共有1个答案

殷烨
2023-03-14

正如这里提到的,分级distZip配置文件,您只需将文件夹dist/config添加到src文件夹中,它将自动包含在distZip任务中。

至于将其添加到运行时类路径中,只需将文件夹作为依赖项添加即可(见下文)。

由于startscripts的限制,需求#2有点难。但是,这个问题的答案提供了一个解决方法:使用Gradle的应用程序插件添加类路径条目

// put config files in src/dist/config

dependencies {
  runtime files('src/dist/config')
}

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')
  }
}

编辑:在您的注释中,您暗示您也希望它在构建脚本的类路径中可用。如果是这种情况,则需要添加一个buildscript依赖项,如下所示:

buildscript {
  dependencies {
    classpath files('src/dist/config')
  }
}

编辑#2:在另一个注释中,您提到添加运行时依赖项会导致在启动脚本类路径中产生一个额外的、无效的条目。您可以通过添加任何javaexec任务的类路径而不是使用依赖项来解决这个问题。因此,将dependencies{runtime{...}}块替换为

tasks.withType(JavaExec) {
  classpath += files('src/dist/config')
}
 类似资料:
  • 我刚刚开始玩适用于Android的gradle构建系统。 然而,我无法构建我的一个项目。它取决于libs/文件夹中的jar。 由于jar文件中的所有类都丢失了,所以在编译bug任务中执行gradle构建失败。 这是一个图书馆项目!这是我的身材。gradle文件: 我错过了什么明显的东西吗? 戈德陈

  • windows中的属性文件包含以下绝对文件路径: 这个A文件包含B文件的文件路径。我想使用Java属性类将READY属性写入1,其他保持不变。 不知何故,a.ini中的文件路径在a.ini更新后被破坏。有人帮助找出在文件中写入属性的最佳方式(可能不是ini,可能是txt文件)。

  • 我目前正在尝试使用Apache POI从java中读写excel (xlsx而不是xls)。问题是我不仅需要poi-oo XML jar,还需要依赖关系。我如何创建一个类路径来将所有这些链接在一起? 我目前使用的包括: < li>poi-ooxml-3.10 < li>poi-ooxml-schemas-3.10 < li>dom4j- 1.6.1 < li>xmlbeans-2.3.0 < li

  • 我有一个带有图形编辑器的项目(如GMF技术),我需要读取一个文件。Jar库位于项目的类路径上。 VectorSync_1.0.0.201403121100.jar具有如下结构: 矢量同步: 图标/矢量同步。gif 这个导入的项目的类路径。Jar文件是: 我使用此方法尝试访问. xml文件: 但使用的方法始终返回null。 你能帮我解决这个问题吗 谢谢

  • 问题内容: 是否可以向可运行的jar文件的类路径中添加一些属性文件?我尝试了以下解决方案: 使用以下命令运行可执行文件: java -cp ../prop_dir/prop1.properties;../prop_dir/prop2.properties -jar MyRunnableJar.jar 添加到清单文件中(在“类路径”部分中) ../prop_dir/prop1.properties

  • 这个问题与我的另一个问题类似,但这次是针对Microsoft Azure的。 我们有一个配置文件需要在驱动程序(可能还有执行程序)的类路径中。 在Microsoft Azure中定义数据库群集时,我配置了自定义Spark配置:spark.executor.extraClassPath和spark.driver.extraClassPath。我将两个路径指向dbfs中包含我们配置的目录。但正如一半人