我最近在一个7年以上的项目中开始了新工作,该项目使用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中,因此我需要将资源保留在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文件夹,并将它们添加到运行脚本中的classpath中。
除了将资源仍复制到已构建的.jar中之外,上述工作正常。这些将覆盖外部文件夹配置,因此不会。
jar {
processResources {
exclude("*")
}
}
如果我现在只运行assemble构建的项目,那正是我想要的,但是IDE现在无法运行调试器或测试成功,因为它无法找到下面缺少的文件build/resources/main
我也尝试过idea插件设置资源路径,但无济于事。
有办法吗?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。