Dave Jarvis' Repositories

git clone https://repo.autonoma.ca/repo/keenquotes.git
plugins {
  id 'application'
  id 'com.palantir.git-version' version '3.0.0'
  id "me.champeau.jmh" version "0.7.2"
}

group 'com.whitemagicsoftware'

repositories {
  mavenCentral()
}

dependencies {
  def v_junit = '5.10.3'
  def v_picocli = '4.7.6'

  // Command-line parsing
  implementation "info.picocli:picocli:${v_picocli}"

  testImplementation "org.junit.jupiter:junit-jupiter-api:${v_junit}"
  testImplementation "org.junit.jupiter:junit-jupiter-params:${v_junit}"
  testRuntimeOnly "org.junit.jupiter:junit-jupiter-engine:${v_junit}"
}

sourceSets {
  main {
    java {
      srcDirs = ["src/main/java"]
    }
  }
}

compileJava {
  options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation"
  options.compilerArgs.addAll( ['--release', '22'] )
}

application {
  applicationName = 'keenquotes'
  mainClassName = "com.whitemagicsoftware.${applicationName}.app.KeenQuotes"
}

version = gitVersion()

def resourceDir = sourceSets.main.resources.srcDirs[0]
final File propertiesFile = file( "${resourceDir}/com/whitemagicsoftware/${applicationName}/app/version.properties" )
propertiesFile.write( "application.version=${version}" )

jar {
  duplicatesStrategy = DuplicatesStrategy.EXCLUDE

  manifest {
    attributes 'Main-Class': mainClassName
  }

  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'
}

tasks.register( 'lib', Jar ) {
  archiveFileName = "${applicationName}.jar"
  destinationDirectory = layout.buildDirectory.dir( "lib" )

  from layout.buildDirectory.dir( "classes/java/main" )
  exclude "**/KeenQuotes.class"
}

lib.configure {
  dependsOn compileJava
}

tasks.named( 'test' ) {
  useJUnitPlatform()
}