使用Gradle中的依赖项设置EclipseProject.ReferencedProject
我正在创建Eclipse项目文件,如图所示:使用Gradle中的依赖项设置EclipseProject.ReferencedProject,gradle,gradle-eclipse,Gradle,Gradle Eclipse,我正在创建Eclipse项目文件,如图所示: eclipse { project { natures 'org.eclipse.jdt.core.javanature' buildCommand 'org.eclipse.jdt.core.javabuilder' } classpath { downloadSources true downloadJavadoc true } } 我有一个多项目的
eclipse {
project {
natures 'org.eclipse.jdt.core.javanature'
buildCommand 'org.eclipse.jdt.core.javabuilder'
}
classpath {
downloadSources true
downloadJavadoc true
}
}
我有一个多项目的gradle构建,其中项目相互引用和第三方LIB。对于projectA,其依赖项为:
dependencies {
compile project(':projectB')
compile project(':projectC')
compile "com.google.guava:guava:${VER_GUAVA}"
}
这非常有效,只是生成的项目彼此不引用。它构建得很好,但这意味着如果我在projectB中重构某些东西,projectA中的引用就不会被重构。修复显然是设置eclipse配置的referencedProjects变量,但我希望根据依赖项自动填充该变量。比如:
eclipse {
project {
referencedProjects dependencies.grep(dep is project)
...
有人有什么提示吗?我就是这样解决的:
// add all project dependencies as referencedProjects
tasks.cleanEclipse.doLast {
project.configurations.stream()
.flatMap({config -> config.dependencies.stream()}) // get all deps
.filter({dep -> dep instanceof ProjectDependency}) // that are Projects
.forEach({dep -> eclipse.project.referencedProjects.add(dep.name)}) // and add to referencedProjects
}
// always create "fresh" projects
tasks.eclipse.dependsOn(cleanEclipse)
可能应该提到,我使用这个插件是因为我在一个OSGI环境中,它对依赖项有一些技巧。这可能是我无法自动获取此信息的原因,但上面的代码片段很容易修复它。如果我在Eclipse中使用flat MulyProject模板创建一个新的Gradle项目,则会创建产品和我的库项目,其中产品通过Gradle编译依赖关系依赖于我的库。然而,当我将CoolLibniceMethod重命名为CoolLibbestMethod时,我认为它正确地完成了重构。不知道您的设置与模板中的设置有什么不同…您是指此处7.3.3中的模板吗?