apply plugin: 'maven-publish' apply plugin: 'edu.wpi.first.wpilib.versioning.WPILibVersioningPlugin' apply plugin: 'java' apply plugin: 'net.ltgt.errorprone' apply plugin: 'pmd' if (!hasProperty('releaseType')) { WPILibVersion { releaseType = 'dev' } } def pubVersion if (project.hasProperty("publishVersion")) { pubVersion = project.publishVersion } else { pubVersion = WPILibVersion.version } def baseArtifactId = project.baseId def artifactGroupId = project.groupId def javaBaseName = "_GROUP_edu_wpi_first_${project.baseId}_ID_${project.baseId}-java_CLS" def outputsFolder = file("$project.buildDir/outputs") task sourcesJar(type: Jar, dependsOn: classes) { classifier = 'sources' from sourceSets.main.allSource } task javadocJar(type: Jar, dependsOn: javadoc) { classifier = 'javadoc' from javadoc.destinationDir } task outputJar(type: Jar, dependsOn: classes) { baseName javaBaseName destinationDir outputsFolder from sourceSets.main.output } task outputSourcesJar(type: Jar, dependsOn: classes) { baseName javaBaseName destinationDir outputsFolder classifier = 'sources' from sourceSets.main.allSource } task outputJavadocJar(type: Jar, dependsOn: javadoc) { baseName javaBaseName destinationDir outputsFolder classifier = 'javadoc' from javadoc.destinationDir } artifacts { archives sourcesJar archives javadocJar archives outputJar archives outputSourcesJar archives outputJavadocJar } addTaskToCopyAllOutputs(outputSourcesJar) addTaskToCopyAllOutputs(outputJavadocJar) addTaskToCopyAllOutputs(outputJar) build.dependsOn outputSourcesJar build.dependsOn outputJavadocJar build.dependsOn outputJar project(':').libraryBuild.dependsOn build publishing { publications { java(MavenPublication) { artifact jar artifact sourcesJar artifact javadocJar artifactId = "${baseArtifactId}-java" groupId artifactGroupId version pubVersion } } } test { testLogging { events "failed" exceptionFormat "full" } } if (project.hasProperty('onlyAthena')) { test.enabled = false } pmd { sourceSets = [sourceSets.main] consoleOutput = true reportsDir = file("$project.buildDir/reports/pmd") ruleSetFiles = files(new File(rootDir, "styleguide/pmd-ruleset.xml")) ruleSets = [] } repositories { mavenCentral() } configurations.errorprone { resolutionStrategy.force 'com.google.errorprone:error_prone_core:2.0.9' } sourceSets { dev } compileJava { sourceCompatibility = 1.8 targetCompatibility = 1.8 } dependencies { testCompile 'junit:junit:4.12' devCompile sourceSets.main.output } task run(type: JavaExec) { classpath = sourceSets.dev.runtimeClasspath main = project.devMain } build.dependsOn devClasses