Skip to content
Snippets Groups Projects

Docker parsing

Files

package nl.tudelft.ewi.scomp
import org.gradle.api.Plugin
import org.gradle.api.Project
import org.gradle.api.internal.plugins.DslObject
import org.gradle.api.internal.tasks.DefaultSourceSet
import org.gradle.api.model.ObjectFactory
import org.gradle.api.plugins.JavaPlugin
import org.gradle.api.plugins.JavaPluginConvention
import org.gradle.api.tasks.SourceSet
import javax.inject.Inject
import static org.gradle.api.plugins.JavaPlugin.IMPLEMENTATION_CONFIGURATION_NAME;
class ScompPlugin implements Plugin<Project> {
private final ObjectFactory objectFactory;
@Inject
ScompPlugin(final ObjectFactory objectFactory) {
this.objectFactory = objectFactory;
}
/**
* Apply this plugin to the given target object.
*
* @param target The target object
*/
@Override
void apply(final Project target) {
target.pluginManager.apply JavaPlugin
def outputDirectory = new File("${target.projectDir}/lib/xml-beans")
def configuration = target.configurations.create 'xsdCompiledLibraries'
configuration.visible = false
configuration.description = 'Generated XML beans'
if (outputDirectory.exists()) {
configuration.defaultDependencies { deps ->
outputDirectory.eachFile {
deps.add target.dependencies.create(target.files(it.path))
}
}
}
target.configurations.getByName(IMPLEMENTATION_CONFIGURATION_NAME).extendsFrom configuration
target.convention.getPlugin(JavaPluginConvention).sourceSets.all { SourceSet it ->
def delegate = new XsdSourceVirtualDirectory(
((DefaultSourceSet) it).displayName, objectFactory
)
new DslObject(it).convention.plugins.put(XsdSourceVirtualDirectory.NAME, delegate)
delegate.xsd.srcDir "src/${it.getName()}/xsd"
it.allSource.source delegate.xsd
def taskName = it.getTaskName 'generate', 'XmlBeans'
target.tasks.register taskName, ScompTask, {
it.description = 'Converts XML schema definitions into Java beans'
it.source = delegate.xsd
it.outputDirectory = outputDirectory
}
}
}
}
Loading