|
@@ -182,60 +182,6 @@ class BuildPlugin implements Plugin<Project> {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- /** Add a check before gradle execution phase which ensures java home for the given java version is set. */
|
|
|
- static void requireJavaHome(Task task, int version) {
|
|
|
- // use root project for global accounting
|
|
|
- Project rootProject = task.project.rootProject
|
|
|
- ExtraPropertiesExtension extraProperties = rootProject.extensions.extraProperties
|
|
|
-
|
|
|
- // hacky way (but the only way) to find if the task graph has already been populated
|
|
|
- boolean taskGraphReady
|
|
|
- try {
|
|
|
- rootProject.gradle.taskGraph.getAllTasks()
|
|
|
- taskGraphReady = true
|
|
|
- } catch (IllegalStateException) {
|
|
|
- taskGraphReady = false
|
|
|
- }
|
|
|
-
|
|
|
- if (taskGraphReady) {
|
|
|
- // check directly if the version is present since we are already executing
|
|
|
- if (BuildParams.javaVersions.find { it.version == version } == null) {
|
|
|
- throw new GradleException("JAVA${version}_HOME required to run task:\n${task}")
|
|
|
- }
|
|
|
- } else {
|
|
|
- // setup list of java versions we will check at the end of configuration time
|
|
|
- if (extraProperties.has('requiredJavaVersions') == false) {
|
|
|
- extraProperties.set('requiredJavaVersions', [:])
|
|
|
- rootProject.gradle.taskGraph.whenReady { TaskExecutionGraph taskGraph ->
|
|
|
- List<String> messages = []
|
|
|
- Map<Integer, List<Task>> requiredJavaVersions = (Map<Integer, List<Task>>) extraProperties.get('requiredJavaVersions')
|
|
|
- for (Map.Entry<Integer, List<Task>> entry : requiredJavaVersions) {
|
|
|
- if (BuildParams.javaVersions.any { it.version == entry.key }) {
|
|
|
- continue
|
|
|
- }
|
|
|
- List<String> tasks = entry.value.findAll { taskGraph.hasTask(it) }.collect { " ${it.path}".toString() }
|
|
|
- if (tasks.isEmpty() == false) {
|
|
|
- messages.add("JAVA${entry.key}_HOME required to run tasks:\n${tasks.join('\n')}".toString())
|
|
|
- }
|
|
|
- }
|
|
|
- if (messages.isEmpty() == false) {
|
|
|
- throw new GradleException(messages.join('\n'))
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- Map<Integer, List<Task>> requiredJavaVersions = (Map<Integer, List<Task>>) extraProperties.get('requiredJavaVersions')
|
|
|
- requiredJavaVersions.putIfAbsent(version, [])
|
|
|
- requiredJavaVersions.get(version).add(task)
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- /** A convenience method for getting java home for a version of java and requiring that version for the given task to execute */
|
|
|
- static String getJavaHome(final Task task, final int version) {
|
|
|
- requireJavaHome(task, version)
|
|
|
- JavaHome java = BuildParams.javaVersions.find { it.version == version }
|
|
|
- return java == null ? null : java.javaHome.get().absolutePath
|
|
|
- }
|
|
|
-
|
|
|
/**
|
|
|
* Makes dependencies non-transitive.
|
|
|
*
|