我最近开始工作 7 年多旧项目 which 使用 Ant/Ivy用于依赖关系和构建管理。我的任务是将其转换为 Gradle但结构有点不传统:
|- projectRoot
|- folderA
|- folderB
|- projectX
|- conf
| |- file1.txt
|
|- core
| |- src
| | |- App.java
| |
| |- test
| |- AppTest.java
|
|- res
| |- file2.txt
|
|- ivybuild.xml
|- ivysettings.xml
Ivy 构建过程相当简单,生成的 dist 文件夹如下所示:
|- dist
|- proj.jar
|- lib
| |- dep1.jar
| |- dep2.jar
|
|- conf
| |- file1.txt
|- res
|- file2.txt
没有资源由于某些配置是在部署期间从单独的存储库应用的,因此资源必须保留在 JAR 外部。
我正在努力寻找一种方法来实现这一目标,同时还让 IDE (Intellij IDEA) 在调试和运行测试期间成功找到资源。
sourceSets {
main {
java {
srcDir 'core/src'
}
resources {
srcDir 'conf'
srcDir 'res'
}
}
test {
java {
srcDir 'core/test'
}
}
}
processResources {
from 'conf' into 'lib/conf'
from 'res' into 'lib/res'
}
startScripts {
classpath += files('conf')
classpath += files('res')
}
通过上述内容,我能够成功运行/测试项目,因为“conf”和“res”中的所有文件都被复制到“build/resources/main”中,这允许调试和测试找到它们。它将两个资源目录复制到输出 lib 文件夹,并将它们添加到运行脚本中的类路径中。
除了资源仍被复制到构建的 JAR 中之外,上述方法均有效。这些会覆盖外部文件夹配置,因此不会起作用。
jar {
processResources {
exclude("*")
}
}
如果我现在跑assemble
那么构建的项目正是我想要的,但是 IDE 现在无法成功运行调试器或测试,因为它无法找到下面丢失的文件build/resources/main
我也尝试过idea
插件设置资源路径但无济于事。
有办法吗?