Commits

shemnon committed 15a98b6

css to bss task

  • Participants
  • Parent commits 65125d4

Comments (0)

Files changed (2)

File plugin/src/main/groovy/com/bitbucket/shemnon/javafxplugin/JavaFXPlugin.groovy

 import org.gradle.api.artifacts.ConfigurationContainer
 import org.gradle.api.artifacts.Configuration
 import org.gradle.api.plugins.JavaPlugin
+import com.bitbucket.shemnon.javafxplugin.tasks.JavaFXCSSToBinTask
 
 
 class JavaFXPlugin implements Plugin<Project> {
         }
         project.sourceSets {
             'package' {
-                resourcesDir = 'src/main'
+                resources {
+                    srcDir 'src/main'
+                }
             }
         }
 
         configureJFXDeployTask(project)
         configureJavaFXJarTask(project)
+        configureJavaFXCSSToBinTask(project)
     }
 
     private configureJFXDeployTask(Project project) {
         project.tasks.getByName("jfxDeploy").dependsOn(task)
     }
 
+    private configureJavaFXCSSToBinTask(Project project) {
+        def task = project.task("cssToBin", description: "Converts CSS to Binary CSS", type: JavaFXCSSToBinTask)
+
+        task.conventionMapping.antJavaFXJar = {convention, aware -> convention.getPlugin(JavaFXPluginConvention).antJavaFXJar }
+        task.conventionMapping.jfxrtJar = {convention, aware -> convention.getPlugin(JavaFXPluginConvention).jfxrtJar }
+
+        task.conventionMapping.distsDir = {convention, aware -> convention.getPlugin(JavaPluginConvention).sourceSets.main.output.resourcesDir}
+
+        task.conventionMapping.inputFiles = {convention, aware ->
+            project.fileTree(dir: convention.getPlugin(JavaPluginConvention).sourceSets.main.output.resourcesDir, include: '**/*.css')
+        }
+
+        project.tasks.getByName("jfxJar").dependsOn(task)
+    }
+
     public void configureConfigurations(ConfigurationContainer configurationContainer) {
         Configuration provideCompileConfiguration = configurationContainer.add(PROVIDED_COMPILE_CONFIGURATION_NAME).setVisible(false).
                 setDescription("Additional compile classpath for libraries that should not be part of the WAR archive.");

File plugin/src/main/groovy/com/bitbucket/shemnon/javafxplugin/tasks/JavaFXCSSToBinTask.groovy

+/*
+ * Copyright (c) 2012, Danno Ferrin
+ *   All rights reserved.
+ *
+ *   Redistribution and use in source and binary forms, with or without
+ *   modification, are permitted provided that the following conditions are met:
+ *       * Redistributions of source code must retain the above copyright
+ *         notice, this list of conditions and the following disclaimer.
+ *       * Redistributions in binary form must reproduce the above copyright
+ *         notice, this list of conditions and the following disclaimer in the
+ *         documentation and/or other materials provided with the distribution.
+ *       * Neither the name of Danno Ferrin nor the
+ *         names of contributors may be used to endorse or promote products
+ *         derived from this software without specific prior written permission.
+ *
+ *   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ *   ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ *   WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ *   DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
+ *   DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ *   (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ *   LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ *   ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ *   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ *   SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+package com.bitbucket.shemnon.javafxplugin.tasks;
+
+
+import org.gradle.api.file.FileCollection
+import org.gradle.api.internal.ConventionTask
+import org.gradle.api.tasks.InputFiles
+import org.gradle.api.tasks.OutputDirectory
+import org.gradle.api.tasks.TaskAction
+
+class JavaFXCSSToBinTask extends ConventionTask {
+
+    @TaskAction
+    processResources() {
+        ant.taskdef(name: 'csstobin',
+                classname: 'com.sun.javafx.tools.ant.CSSToBinTask',
+                classpath: (getAntJavaFXJar() + getJfxrtJar()).asPath)
+
+        ant.csstobin(
+                outDir: getDistsDir()
+        ) {
+            getInputFiles().addToAntBuilder(ant, "fileset", FileCollection.AntType.FileSet)
+        }
+    }
+
+    FileCollection antJavaFXJar
+    FileCollection jfxrtJar
+
+
+
+    @InputFiles
+    FileCollection inputFiles
+
+    @OutputDirectory
+    File distsDir
+}