mirror of
https://github.com/spring-projects/spring-framework.git
synced 2026-05-04 13:25:31 +01:00
84e4244793
Specifically set the source level in generated eclipse projects to 1.7 rather than 1.8. Allows the current eclipse milestone (4.3 M6) in combination with JDK 8.0 to be used for Spring 4.0 development.
106 lines
3.5 KiB
Groovy
106 lines
3.5 KiB
Groovy
import org.gradle.plugins.ide.eclipse.model.ProjectDependency
|
|
import org.gradle.plugins.ide.eclipse.model.SourceFolder
|
|
|
|
|
|
apply plugin: "propdeps-eclipse"
|
|
apply plugin: "propdeps-idea"
|
|
|
|
// Until eclipse fully supports Java 8 use 1.7 source level
|
|
eclipse.jdt {
|
|
sourceCompatibility = 1.7
|
|
targetCompatibility = 1.7
|
|
}
|
|
|
|
// Replace classpath entries with project dependencies (GRADLE-1116)
|
|
eclipse.classpath.file.whenMerged { classpath ->
|
|
def regexp = /.*?\/([^\/]+)\/build\/[^\/]+\/(?:main|test)/ // only match those that end in main or test (avoids removing necessary entries like build/classes/jaxb)
|
|
def projectOutputDependencies = classpath.entries.findAll { entry -> entry.path =~ regexp }
|
|
projectOutputDependencies.each { entry ->
|
|
def matcher = (entry.path =~ regexp)
|
|
if(matcher) {
|
|
def projectName = matcher[0][1]
|
|
def path = "/${projectName}"
|
|
if(!classpath.entries.find { e -> e instanceof ProjectDependency && e.path == path }) {
|
|
def dependency = new ProjectDependency(path, project(":${projectName}").path)
|
|
dependency.exported = true
|
|
classpath.entries.add(dependency)
|
|
}
|
|
classpath.entries.remove(entry)
|
|
}
|
|
}
|
|
classpath.entries.removeAll { entry -> (entry.path =~ /(?!.*?repack.*\.jar).*?\/([^\/]+)\/build\/libs\/[^\/]+\.jar/) }
|
|
}
|
|
|
|
|
|
// Use separate main/test outputs (prevents WTP from packaging test classes)
|
|
eclipse.classpath.defaultOutputDir = file(project.name+"/bin/eclipse")
|
|
eclipse.classpath.file.beforeMerged { classpath ->
|
|
classpath.entries.findAll{ it instanceof SourceFolder }.each {
|
|
if(it.output.startsWith("bin/")) {
|
|
it.output = null
|
|
}
|
|
}
|
|
}
|
|
eclipse.classpath.file.whenMerged { classpath ->
|
|
classpath.entries.findAll{ it instanceof SourceFolder }.each {
|
|
it.output = "bin/" + it.path.split("/")[1]
|
|
}
|
|
}
|
|
|
|
// Allow projects to be used as WPT modules
|
|
eclipse.project.natures "org.eclipse.wst.common.project.facet.core.nature"
|
|
|
|
|
|
// Include project specific settings
|
|
task eclipseSettings(type: Copy) {
|
|
from rootProject.files(
|
|
"src/eclipse/org.eclipse.jdt.ui.prefs",
|
|
"src/eclipse/org.eclipse.wst.common.project.facet.core.xml")
|
|
into project.file('.settings/')
|
|
outputs.upToDateWhen { false }
|
|
}
|
|
|
|
task eclipseWstComponent(type: Copy) {
|
|
from rootProject.files(
|
|
"src/eclipse/org.eclipse.wst.common.component")
|
|
into project.file('.settings/')
|
|
expand(deployname: project.name)
|
|
outputs.upToDateWhen { false }
|
|
}
|
|
|
|
task eclipseJdtPrepare(type: Copy) {
|
|
from rootProject.file("src/eclipse/org.eclipse.jdt.core.prefs")
|
|
into project.file(".settings/")
|
|
outputs.upToDateWhen { false }
|
|
}
|
|
|
|
task cleanEclipseJdtUi(type: Delete) {
|
|
delete project.file(".settings/org.eclipse.jdt.ui.prefs")
|
|
delete project.file("org.eclipse.jdt.core.prefs")
|
|
delete project.file(".settings/org.eclipse.wst.common.component")
|
|
delete project.file(".settings/org.eclipse.wst.common.project.facet.core.xml")
|
|
}
|
|
|
|
tasks["eclipseJdt"].dependsOn(eclipseJdtPrepare)
|
|
tasks["cleanEclipse"].dependsOn(cleanEclipseJdtUi)
|
|
tasks["eclipse"].dependsOn(eclipseSettings, eclipseWstComponent)
|
|
|
|
|
|
// Filter 'build' folder
|
|
|
|
eclipse.project.file.withXml {
|
|
def node = it.asNode()
|
|
|
|
def filteredResources = node.get("filteredResources")
|
|
if(filteredResources) {
|
|
node.remove(filteredResources)
|
|
}
|
|
def filterNode = node.appendNode("filteredResources").appendNode("filter")
|
|
filterNode.appendNode("id", "1359048889071")
|
|
filterNode.appendNode("name", "")
|
|
filterNode.appendNode("type", "30")
|
|
def matcherNode = filterNode.appendNode("matcher")
|
|
matcherNode.appendNode("id", "org.eclipse.ui.ide.multiFilter")
|
|
matcherNode.appendNode("arguments", "1.0-projectRelativePath-matches-false-false-build")
|
|
}
|