Dave Jarvis' Repositories

git clone https://repo.autonoma.ca/repo/keenwrite.git
plugins {
  id 'application'
  id 'org.openjfx.javafxplugin' version '0.0.9'
  id 'com.palantir.git-version' version '0.12.3'
  id 'org.beryx.jlink' version '2.16.2'
}

repositories {
  mavenCentral()
  jcenter()

  maven {
    url 'https://oss.sonatype.org/content/repositories/snapshots/'
  }

  maven {
    url "https://nexus.bedatadriven.com/content/groups/public"
  }
}

// Assume a cross-platform überjar unless targetOs is set.
String[] os = ["win", "mac", "linux"]

if (project.hasProperty('targetOs')) {
  if ("windows" == targetOs) {
    os = ["win"]
  } else {
    os = [targetOs]
  }
}

javafx {
  version = "14"
  modules = ['javafx.controls', 'javafx.swing']
  configuration = 'compileOnly'
}

dependencies {
  // JavaFX
  implementation 'org.reactfx:reactfx:1.4.1'
  implementation 'org.controlsfx:controlsfx:11.0.2'
  implementation 'org.fxmisc.richtext:richtextfx:0.10.5'
  implementation 'org.fxmisc.wellbehaved:wellbehavedfx:0.3.3'
  implementation 'com.miglayout:miglayout-javafx:5.2'
  implementation('com.dlsc.preferencesfx:preferencesfx-core:11.6.0') {
    exclude group: 'org.openjfx'
  }
  implementation('de.jensd:fontawesomefx-commons:11.0') {
    exclude group: 'org.openjfx'
  }
  implementation('de.jensd:fontawesomefx-fontawesome:4.7.0-11') {
    exclude group: 'org.openjfx'
  }

  // Markdown
  implementation 'com.vladsch.flexmark:flexmark:0.62.2'
  implementation 'com.vladsch.flexmark:flexmark-ext-definition:0.62.2'
  implementation 'com.vladsch.flexmark:flexmark-ext-gfm-strikethrough:0.62.2'
  implementation 'com.vladsch.flexmark:flexmark-ext-superscript:0.62.2'
  implementation 'com.vladsch.flexmark:flexmark-ext-tables:0.62.2'
  implementation 'com.vladsch.flexmark:flexmark-ext-typographic:0.62.2'

  // YAML
  implementation 'com.fasterxml.jackson.core:jackson-core:2.11.2'
  implementation 'com.fasterxml.jackson.core:jackson-databind:2.11.2'
  implementation 'com.fasterxml.jackson.core:jackson-annotations:2.11.2'
  implementation 'com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.11.2'
  implementation 'org.yaml:snakeyaml:1.26'

  // XML and XSL
  implementation 'com.ximpleware:vtd-xml:2.13.4'
  implementation 'net.sf.saxon:Saxon-HE:10.1'
  implementation 'xalan:xalan:2.7.2'

  // HTML parsing and rendering
  implementation 'org.jsoup:jsoup:1.13.1'
  implementation 'org.xhtmlrenderer:flying-saucer-core:9.1.20'

  // R
  implementation 'org.renjin:renjin-script-engine:3.5-beta76'

  // SVG
  implementation 'org.apache.xmlgraphics:batik-anim:1.13'
  implementation 'org.apache.xmlgraphics:batik-awt-util:1.13'
  implementation 'org.apache.xmlgraphics:batik-bridge:1.13'
  implementation 'org.apache.xmlgraphics:batik-css:1.13'
  implementation 'org.apache.xmlgraphics:batik-dom:1.13'
  implementation 'org.apache.xmlgraphics:batik-ext:1.13'
  implementation 'org.apache.xmlgraphics:batik-gvt:1.13'
  implementation 'org.apache.xmlgraphics:batik-parser:1.13'
  implementation 'org.apache.xmlgraphics:batik-script:1.13'
  implementation 'org.apache.xmlgraphics:batik-svg-dom:1.13'
  implementation 'org.apache.xmlgraphics:batik-svggen:1.13'
  implementation 'org.apache.xmlgraphics:batik-transcoder:1.13'
  implementation 'org.apache.xmlgraphics:batik-util:1.13'
  implementation 'org.apache.xmlgraphics:batik-xml:1.13'

  // Spelling, TeX
  implementation fileTree(include: ['**/*.jar'], dir: 'libs')

  // Misc.
  implementation 'org.ahocorasick:ahocorasick:0.4.0'
  implementation 'org.apache.commons:commons-configuration2:2.7'
  implementation 'com.googlecode.juniversalchardet:juniversalchardet:1.0.3'
  implementation 'javax.validation:validation-api:2.0.1.Final'

  def fx = ['controls', 'graphics', 'fxml', 'swing']

  fx.each { fxitem ->
    os.each { ositem ->
      println "org.openjfx:javafx-${fxitem}:${javafx.version}:${ositem}"

      runtimeOnly "org.openjfx:javafx-${fxitem}:${javafx.version}:${ositem}"
    }
  }

  testImplementation('org.junit.jupiter:junit-jupiter-api:5.4.2')
  testRuntime('org.junit.jupiter:junit-jupiter-engine:5.4.2')
}

compileJava {
  options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation"
}

application {
  applicationName = 'scrivenvar'
  mainClassName = "com.${applicationName}.Main"

  applicationDefaultJvmArgs = [
      "--add-opens=javafx.controls/javafx.scene.control=ALL-UNNAMED",
      "--add-opens=javafx.controls/javafx.scene.control.skin=ALL-UNNAMED",
      "--add-opens=javafx.graphics/com.sun.javafx.css=ALL-UNNAMED",
  ]
}

version = gitVersion()

def launcherClassName = "com.${applicationName}.Launcher"

def propertiesFile = new File("src/main/resources/com/${applicationName}/app.properties")
propertiesFile.write("application.version=${version}")

jar {
  duplicatesStrategy = DuplicatesStrategy.EXCLUDE

  manifest {
    attributes 'Main-Class': launcherClassName
  }

  from {
    (configurations.runtimeClasspath.findAll { !it.path.endsWith(".pom") }).collect {
      it.isDirectory() ? it : zipTree(it)
    }
  }

  archiveFileName = "${applicationName}.jar"

  exclude 'META-INF/*.RSA', 'META-INF/*.SF', 'META-INF/*.DSA'
}

distributions {
  main {
    distributionBaseName = applicationName
    contents {
      from { ['LICENSE.md', 'README.md'] }
      into('images') {
        from { 'images' }
      }
    }
  }
}

test {
  useJUnitPlatform()
}