Eclipse 如何允许/解决嵌套复合渐变生成
我遇到了与报道相同的问题: 我有一个Java项目a,它依赖于项目B(模块),并且 项目B依赖于项目C(另一个模块)。A I项目 要为项目B和I设置“IncludeFild../projectB” 想要设置“IncludeFild../projectC”,以便 在Eclipse+Buildship 2.0中开发所有内容,无需运行 项目A、B和C中每一个小变化的梯度 但是,如果我设置了它,我会得到:“包含的生成“%s”不能包含 建立” 预期行为 递归的“IncludeFild”将递归地包含依赖项目 当前行为 我得到“包含的生成“%s”不能包含生成。” 你的环境 Gradle 3.5、Buildship 2.0、Eclipse 3.6 我如何解决/解决此问题?在我的实例中,我有一个包含电子邮件功能的实用程序项目(使用JavaMail)。在数据项目和UI项目中需要电子邮件功能。UI项目也取决于数据项目。您考虑过吗Eclipse 如何允许/解决嵌套复合渐变生成,eclipse,gradle,buildship,Eclipse,Gradle,Buildship,我遇到了与报道相同的问题: 我有一个Java项目a,它依赖于项目B(模块),并且 项目B依赖于项目C(另一个模块)。A I项目 要为项目B和I设置“IncludeFild../projectB” 想要设置“IncludeFild../projectC”,以便 在Eclipse+Buildship 2.0中开发所有内容,无需运行 项目A、B和C中每一个小变化的梯度 但是,如果我设置了它,我会得到:“包含的生成“%s”不能包含 建立” 预期行为 递归的“IncludeFild”将递归地包含依赖项目
settings.gradle
本身就是一个groovy脚本,因此您可以创建一个动态组合,例如在父文件夹下具有build.gradle的所有子文件夹
uber/settings.gradle
新文件(“c:/someFolder”).listFiles()。每个{File f->
如果(f.directory&&new文件(f'build.gradle').exists()){
包括
}
}
乙二醇
为不同的方法添加另一个答案 每个
settings.gradle
都可以在includebild
之前添加一个检查,以查看它是否已经在组合中。如果它已经在组合中,则它不会includebild
有关复合检查的更多信息,请参阅
乙二醇
project2/settings.gradle
boolean inComposite=gradle.parent!=无效的
如果(!不完整){
INCLUDEBILD'../project1'
}
project3/settings.gradle
boolean inComposite=gradle.parent!=无效的
如果(!不完整){
INCLUDEBILD'../project1'
INCLUDEBILD'../project2'
}
project4/settings.gradle
boolean inComposite=gradle.parent!=无效的
如果(!不完整){
INCLUDEBILD'../project1'
INCLUDEBILD'../project2'
includeFild'../project3'
}
等等
使用这种方法,您可以从任何您喜欢的地方运行
gradle
,并且它应该按照预期的方式运行(即用本地项目替换依赖项)实际上这有点令人困惑。你能用文件夹结构演示一下吗。以上述案例为例。非常感谢,请参阅示例文件夹结构。基本上,您会将所有单个项目签出到一个公共文件夹中。然后,uber
build将它们组合在一起。如果您想将uber
项目放在同一个文件夹中,您可以在settings.gradle
中为它添加一个排除项来停止它,包括它自己谢谢您的解释。但是通过这种方式,我不能将project1作为project2的依赖项。是的,你可以。project2将通过GAV
(组、工件、版本)引用project1。如“如果组合中的任何构建都具有包含的构建可以满足的依赖关系,那么该依赖关系将被包含的构建上的项目依赖关系所取代”中所述。注意:您可以通过uber构建运行所有命令以从组合中获益。从单个构建运行gradle将从存储库而不是组合中获取依赖项
c:/someFolder/project1/build.gradle
c:/someFolder/project1/src/main/java/**/*.java
c:/someFolder/project2/build.gradle
c:/someFolder/project2/src/main/java/**/*.java
c:/uber/settings.gradle (as above)