mirror of https://github.com/apache/kafka.git
KAFKA-4617; Improve configuration of Gradle’s eclipse task
Generate core project with correct source folders. In addition set output folders same as command line build. Don't generate unnecessary projects. Author: Dhwani Katagade <dhwani_katagade@persistent.com> Reviewers: Edoardo Comar <ecomar@uk.ibm.com>, Guozhang Wang <wangguoz@gmail.com>, Ismael Juma <ismael@juma.me.uk> Closes #2382 from dhwanikatagade/gradle_eclipse_plugin_path_fix
This commit is contained in:
parent
d24616777a
commit
b6c34e2df5
|
@ -90,6 +90,10 @@ This is for `core`, `examples` and `clients`
|
|||
./gradlew eclipse
|
||||
./gradlew idea
|
||||
|
||||
The `eclipse` task has been configured to use `${project_dir}/build_eclipse` as Eclipse's build directory. Eclipse's default
|
||||
build directory (`${project_dir}/bin`) clashes with Kafka's scripts directory and we don't use Gradle's build directory
|
||||
to avoid known issues with this configuration.
|
||||
|
||||
### Building the jar for all scala versions and for all projects ###
|
||||
./gradlew jarAll
|
||||
|
||||
|
|
37
build.gradle
37
build.gradle
|
@ -32,7 +32,6 @@ buildscript {
|
|||
|
||||
allprojects {
|
||||
apply plugin: 'idea'
|
||||
apply plugin: 'eclipse'
|
||||
apply plugin: "jacoco"
|
||||
|
||||
repositories {
|
||||
|
@ -117,6 +116,11 @@ if (new File('.git').exists()) {
|
|||
|
||||
subprojects {
|
||||
apply plugin: 'java'
|
||||
// apply the eclipse plugin only to subprojects that hold code. 'connect' is just a folder.
|
||||
if (!project.name.equals('connect')) {
|
||||
apply plugin: 'eclipse'
|
||||
fineTuneEclipseClasspathFile(eclipse, project)
|
||||
}
|
||||
apply plugin: 'maven'
|
||||
apply plugin: 'signing'
|
||||
apply plugin: 'checkstyle'
|
||||
|
@ -288,6 +292,37 @@ subprojects {
|
|||
}
|
||||
}
|
||||
|
||||
def fineTuneEclipseClasspathFile(eclipse, project) {
|
||||
eclipse.classpath.file {
|
||||
beforeMerged { cp ->
|
||||
cp.entries.clear()
|
||||
// for the core project add the directories defined under test/scala as separate source directories
|
||||
if (project.name.equals('core')) {
|
||||
cp.entries.add(new org.gradle.plugins.ide.eclipse.model.SourceFolder("src/test/scala/integration", null))
|
||||
cp.entries.add(new org.gradle.plugins.ide.eclipse.model.SourceFolder("src/test/scala/other", null))
|
||||
cp.entries.add(new org.gradle.plugins.ide.eclipse.model.SourceFolder("src/test/scala/unit", null))
|
||||
}
|
||||
}
|
||||
whenMerged { cp ->
|
||||
// for the core project exclude the separate sub-directories defined under test/scala. These are added as source dirs above
|
||||
if (project.name.equals('core')) {
|
||||
cp.entries.findAll { it.kind == "src" && it.path.equals("src/test/scala") }*.excludes = ["integration/", "other/", "unit/"]
|
||||
}
|
||||
/*
|
||||
* Set all eclipse build output to go to 'build_eclipse' directory. This is to ensure that gradle and eclipse use different
|
||||
* build output directories, and also avoid using the eclpise default of 'bin' which clashes with some of our script directories.
|
||||
* https://discuss.gradle.org/t/eclipse-generated-files-should-be-put-in-the-same-place-as-the-gradle-generated-files/6986/2
|
||||
*/
|
||||
cp.entries.findAll { it.kind == "output" }*.path = "build_eclipse"
|
||||
/*
|
||||
* Some projects have explicitly added test output dependencies. These are required for the gradle build but not required
|
||||
* in Eclipse since the dependent projects are added as dependencies. So clean up these from the generated classpath.
|
||||
*/
|
||||
cp.entries.removeAll { it.kind == "lib" && it.path.matches(".*/build/(classes|resources)/test") }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Aggregates all jacoco results into the root project directory
|
||||
task jacocoRootReport(type: org.gradle.testing.jacoco.tasks.JacocoReport) {
|
||||
def javaProjects = subprojects.findAll { it.path != ':core' }
|
||||
|
|
Loading…
Reference in New Issue