plugins { id 'idea' id 'java-library' id 'org.hidetake.ssh' version '2.10.1' } group 'schule.ngb' version '0.0.35-SNAPSHOT' java { withSourcesJar() withJavadocJar() } compileJava { options.release = 11 } repositories { mavenCentral() } remotes { uberspace { host = 'westphal.uberspace.de' user = 'ngb' identity = file("${System.properties['user.home']}/.ssh/uberspace_rsa") knownHosts = allowAnyHosts } } dependencies { runtimeOnly 'com.googlecode.soundlibs:jlayer:1.0.1.4' runtimeOnly 'com.googlecode.soundlibs:tritonus-share:0.3.7.4' runtimeOnly 'com.googlecode.soundlibs:mp3spi:1.9.5.4' compileOnlyApi 'colt:colt:1.2.0' //api 'colt:colt:1.2.0' //api 'net.sourceforge.parallelcolt:parallelcolt:0.10.1' testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.1' testImplementation 'org.junit.jupiter:junit-jupiter-params:5.8.1' testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.1' } jar { manifest { attributes 'Class-Path': '.' } } tasks.register('jarMP3SPI', Jar) { group "build" description "Build jar with MP3SPI included" archiveClassifier = 'mp3spi' duplicatesStrategy = 'exclude' // archivesBaseName = 'zeichenmaschine-mp3spi' from { configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) } } with jar } task buildAll { group "build" description "Build all jar packages" dependsOn 'jar' dependsOn 'jarMP3SPI' dependsOn 'sourcesJar' dependsOn 'javadocJar' } javadoc { options { encoding = "UTF-8" overview = "src/resources/java/overview.html" // title = "Die Zeichenmaschine" // options.links 'https://docs.oracle.com/javase/8/docs/api/' // options.links 'https://docs.oracle.com/javaee/7/api' options.links 'https://docs.oracle.com/en/java/javase/11/docs/api' } options.addStringOption("charset", "UTF-8") } task mkdocs(type: Exec) { group "documentation" description "Build MKDocs site" workingDir "${projectDir}" commandLine ".venv/bin/python", "-m", "mkdocs", "build" } task buildDocs { group "documentation" description "Run all documentation tasks" dependsOn 'javadoc' dependsOn 'javadocJar' dependsOn 'mkdocs' } task zipSite(type: Zip) { group "documentation" description "Create zip archives for documentations" dependsOn 'mkdocs' from fileTree("${buildDir}/docs/site") exclude '*.py' exclude '__pycache__' archiveName 'site.zip' destinationDir(file("${buildDir}/docs")) } task zipJavadoc(type: Zip) { group "documentation" description "Create zip archives for javadoc" dependsOn 'javadoc' from fileTree("${buildDir}/docs/javadoc") archiveName 'javadoc.zip' destinationDir(file("${buildDir}/docs")) } task uploadDocs { group "documentation" description "Run all documentation tasks and upload artifacts to zeichenmaschine.xyz" dependsOn 'zipSite' dependsOn 'zipJavadoc' doLast { ssh.run { session(remotes.uberspace) { execute 'rm -rf /var/www/virtual/ngb/zeichenmaschine.xyz/*', ignoreError: true put from: "${buildDir}/docs/site.zip", into: '/var/www/virtual/ngb/zeichenmaschine.xyz', ignoreError: true execute 'unzip -o -q /var/www/virtual/ngb/zeichenmaschine.xyz/site.zip -d /var/www/virtual/ngb/zeichenmaschine.xyz' put from: "${buildDir}/docs/javadoc.zip", into: '/var/www/virtual/ngb/zeichenmaschine.xyz', ignoreError: true execute 'unzip -o -q /var/www/virtual/ngb/zeichenmaschine.xyz/javadoc.zip -d /var/www/virtual/ngb/zeichenmaschine.xyz/docs' } } } } test { useJUnitPlatform() }