gpt4 book ai didi

java - 如何在 gradle 的应用程序插件 'run' 任务的类路径上指定一个额外的文件夹?

转载 作者:搜寻专家 更新时间:2023-10-30 21:19:48 25 4
gpt4 key购买 nike

我已成功配置我的 gradle 构建脚本,以创建我的应用程序的 zip 分发,在根目录下有一个额外的“config”文件夹。此文件夹(至少现在)仅包含应用程序正在使用的一个属性文件,并且位于应用程序的类路径中。

然而,我现在正在寻找的是一种对应用程序插件中的“运行”任务执行相同操作的方法。当我尝试以这种方式运行我的应用程序时,(为了测试),我的程序无法运行,因为一个类试图访问类路径根目录中的这个属性文件。

如果我能让 IntelliJ 或 Eclipse 也像其他文件夹(src/main/java, src/main/resources, ...)一样将这个文件夹添加到它的类路径中,这样我就可以运行和调试了我的代码从 IDE 中调用而不调用 gradle 任务。我想尽量避免将此代码绑定(bind)到任何一个 IDE,这样当任何人需要处理该项目时,他们只需要导入 build.gradle 文件并让 IDE 制作它需要的适当配置文件.

这是我的 build.gradle 文件:

apply plugin: 'application'

mainClassName = "MainClass"

startScripts {
// Add config folder to classpath. Using workaround at
// https://discuss.gradle.org/t/classpath-in-application-plugin-is-building-always-relative-to-app-home-lib-directory/2012
classpath += files('src/dist/config')
doLast {
def windowsScriptFile = file getWindowsScript()
def unixScriptFile = file getUnixScript()
windowsScriptFile.text = windowsScriptFile.text.replace('%APP_HOME%\\lib\\config', '%APP_HOME%\\config')
unixScriptFile.text = unixScriptFile.text.replace('$APP_HOME/lib/config', '$APP_HOME/config')
}
}

repositories {
...
}

dependencies {
...
}

可能需要发生的事情是我需要将/src/dist/config 文件夹复制到构建目录中并添加到类路径中,或者将其内容复制到类路径中已有的文件夹中.

最佳答案

我最终接受了 Opal 的建议,并提出了以下解决方案。我将以下内容添加到我的 build.gradle 文件中:

task processConfig(type: Copy) {
from('src/main/config') {
include '**/*'
}

into 'build/config/main'
}

classes {
classes.dependsOn processConfig
}

run {
classpath += files('build/config/main')
}

或者,一种更简单的方法是将运行时依赖项添加到我的项目中:

dependencies {
...
runtime files('src/main/config')
}

不过,我最终并没有这样做,因为我的分发包最终在 lib 文件夹中有 .properties 文件……我只是对这种方式很挑剔。

关于java - 如何在 gradle 的应用程序插件 'run' 任务的类路径上指定一个额外的文件夹?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30491345/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com