// SPDX-FileCopyrightText: 2021 Paul Schaub // // SPDX-License-Identifier: Apache-2.0 plugins { id 'application' } def generatedVersionDir = "${buildDir}/generated-version" sourceSets { main { output.dir(generatedVersionDir, builtBy: 'generateVersionProperties') } } task generateVersionProperties { doLast { def propertiesFile = file "$generatedVersionDir/version.properties" propertiesFile.parentFile.mkdirs() propertiesFile.createNewFile() // Instead of using a Properties object here, we directly write to the file // since Properties adds a timestamp, ruining reproducibility propertiesFile.write("version="+rootProject.version.toString()) } } processResources.dependsOn generateVersionProperties dependencies { testImplementation(project(":pgpainless-core")) testImplementation "org.junit.jupiter:junit-jupiter-api:$junitVersion" testRuntimeOnly "org.junit.jupiter:junit-jupiter-engine:$junitVersion" // https://todd.ginsberg.com/post/testing-system-exit/ testImplementation 'com.ginsberg:junit5-system-exit:1.1.2' // implementation "ch.qos.logback:logback-core:1.2.6" // We want logback logging in tests and in the app testImplementation "ch.qos.logback:logback-classic:$logbackVersion" implementation "ch.qos.logback:logback-classic:$logbackVersion" implementation(project(":pgpainless-sop")) implementation "org.pgpainless:sop-java-picocli:$sopJavaVersion" implementation "info.picocli:picocli:$picocliVersion" // https://mvnrepository.com/artifact/com.google.code.findbugs/jsr305 implementation group: 'com.google.code.findbugs', name: 'jsr305', version: '3.0.2' } mainClassName = 'org.pgpainless.cli.PGPainlessCLI' jar { duplicatesStrategy(DuplicatesStrategy.EXCLUDE) manifest { attributes 'Main-Class': "$mainClassName" } from { configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) } } { exclude "META-INF/*.SF" exclude "META-INF/*.DSA" exclude "META-INF/*.RSA" } } run { // https://stackoverflow.com/questions/59445306/pipe-into-gradle-run standardInput = System.in // https://discuss.gradle.org/t/how-can-i-provide-command-line-args-to-application-started-with-gradle-run/6474/5 if (project.hasProperty("appArgs")) { args Eval.me(appArgs) } } tasks."jar".dependsOn(":pgpainless-core:assemble")