【发布时间】:2015-08-10 01:31:07
【问题描述】:
我已成功配置我的 gradle 构建脚本以创建应用程序的 zip 分发包,并在根目录下添加了一个额外的“config”文件夹。此文件夹(至少现在)仅包含一个应用程序正在使用的属性文件,并且位于应用程序的类路径中。
然而,我现在正在寻找的是一种对应用程序插件中的“运行”任务执行相同操作的方法。当我尝试以这种方式运行我的应用程序(用于测试)时,我的程序无法运行,因为一个类试图访问类路径根目录上的这个属性文件。
如果我可以让 IntelliJ 或 Eclipse 像其他文件夹(src/main/java、src/main/resources、...)一样将此文件夹添加到其类路径中,那么我可以运行和调试我在 IDE 中的代码,无需调用 gradle 任务。我想尽量避免将此代码绑定到任何一个 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 文件夹复制到构建目录并添加到类路径中,或者将其内容复制到已经在类路径中的文件夹中.
【问题讨论】:
标签: java eclipse intellij-idea gradle classpath