com.stanfy.helium.gradle.tasks.BaseHeliumTask.groovy Maven / Gradle / Ivy
package com.stanfy.helium.gradle.tasks
import com.stanfy.helium.Helium
import org.gradle.api.DefaultTask
import org.gradle.api.tasks.InputFile
import org.gradle.api.tasks.OutputDirectory
import org.gradle.api.tasks.TaskAction
/**
* Created by roman on 12/27/13.
*/
abstract class BaseHeliumTask extends DefaultTask {
/** Input specification file. */
@InputFile
File input
/** Output directory. */
@OutputDirectory
File output
ClassLoader classLoader
private Helium heliumInstance
protected Helium getHelium() {
if (!heliumInstance) {
heliumInstance = new Helium().defaultTypes()
if (input) {
heliumInstance.from input
}
}
return heliumInstance
}
protected abstract void doIt();
@TaskAction
final void runWithClassLoader() {
ClassLoader oldClassLoader = Thread.currentThread().contextClassLoader
Thread.currentThread().setContextClassLoader(classLoader)
try {
doIt()
} finally {
Thread.currentThread().setContextClassLoader(oldClassLoader)
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy