groovygradlegroovyfx

GroovyFX application run with gradle


i have the next sample (from groovyfx site), it's simple window.

import static groovyx.javafx.GroovyFX.start

start {
  stage(title: 'GroovyFX Hello World', visible: true) {
    scene(fill: BLACK, width: 700, height: 250) {
      hbox(padding: 60) {
        text(text: 'Groovy', font: '80pt sanserif') {
          fill linearGradient(endX: 0, stops: [PALEGREEN, SEAGREEN])
        }
        text(text: 'FX', font: '80pt sanserif') {
          fill linearGradient(endX: 0, stops: [CYAN, DODGERBLUE])
          effect dropShadow(color: DODGERBLUE, radius: 25, spread: 0.25)
        }
      }
    }
  }
}

How to run it with gradle run ?

my build.gradle:

 apply plugin: 'groovy'

 sourceCompatibility = 1.8
 targetCompatibility = 1.8

 project.ext.set('javafxHome', System.env['JAVAFX_HOME'])

 repositories {
   mavenCentral()
 }

 configurations {
   ivy
 }

 dependencies {
   ivy "org.apache.ivy:ivy:2.3.0"
   compile 'org.codehaus.groovy:groovy-all:2.3.6'
   compile 'org.codehaus.groovyfx:groovyfx:0.4.0'
   compile files("${javafxHome}/rt/lib/jfxrt.jar")
 }


tasks.withType(GroovyCompile) {
  groovyClasspath += configurations.ivy
}

I might run it from IDE, but how to run it with cli and then build jar with path to Main class?


Solution

  • It works in the following configuration.

    Structure:

    build.gradle

    apply plugin: 'groovy'
    
    sourceCompatibility = 1.8
    targetCompatibility = 1.8
    
    repositories {
      mavenCentral()
    }
    
    configurations {
      ivy
    }
    
    dependencies {
      ivy "org.apache.ivy:ivy:2.3.0"
      compile 'org.codehaus.groovy:groovy-all:2.3.6'
      compile 'org.codehaus.groovyfx:groovyfx:0.4.0'
      compile files("${System.getenv('JAVA_HOME')}/jre/lib/ext/jfxrt.jar")
    }
    
    tasks.withType(GroovyCompile) {
      groovyClasspath += configurations.ivy
    }
    
    task run(type: JavaExec) {
        main = 'Main'
        classpath sourceSets.main.runtimeClasspath
    }
    

    Main.groovy

    import static groovyx.javafx.GroovyFX.start
    
    start {
      stage(title: 'GroovyFX Hello World', visible: true) {
        scene(fill: BLACK, width: 700, height: 250) {
          hbox(padding: 60) {
            text(text: 'Groovy', font: '80pt sanserif') {
              fill linearGradient(endX: 0, stops: [PALEGREEN, SEAGREEN])
            }
            text(text: 'FX', font: '80pt sanserif') {
              fill linearGradient(endX: 0, stops: [CYAN, DODGERBLUE])
              effect dropShadow(color: DODGERBLUE, radius: 25, spread: 0.25)
            }
          }
        }
      }
    }
    

    Have You already seen this site?