使用 Gradle 中的依赖项设置 EclipseProject.referencedProjects
Set EclipseProject.referencedProjects using dependencies in Gradle
我正在创建 Eclipse 项目文件,如下所示:
eclipse {
project {
natures 'org.eclipse.jdt.core.javanature'
buildCommand 'org.eclipse.jdt.core.javabuilder'
}
classpath {
downloadSources true
downloadJavadoc true
}
}
我有一个多项目 gradle 构建,其中项目相互引用并引用第 3 方库。对于 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)
可能应该提到我正在使用 wuff 插件,因为我在 OSGI 环境中,并且它对依赖项有技巧。这可能是我没有自动获取此信息的原因,但上面的代码片段很容易修复它。
我正在创建 Eclipse 项目文件,如下所示:
eclipse {
project {
natures 'org.eclipse.jdt.core.javanature'
buildCommand 'org.eclipse.jdt.core.javabuilder'
}
classpath {
downloadSources true
downloadJavadoc true
}
}
我有一个多项目 gradle 构建,其中项目相互引用并引用第 3 方库。对于 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)
可能应该提到我正在使用 wuff 插件,因为我在 OSGI 环境中,并且它对依赖项有技巧。这可能是我没有自动获取此信息的原因,但上面的代码片段很容易修复它。