Squashed 'third_party/allwpilib_2019/' content from commit bd05dfa1c
Change-Id: I2b1c2250cdb9b055133780c33593292098c375b7
git-subtree-dir: third_party/allwpilib_2019
git-subtree-split: bd05dfa1c7cca74c4fac451e7b9d6a37e7b53447
diff --git a/shared/java/javacommon.gradle b/shared/java/javacommon.gradle
new file mode 100644
index 0000000..6595223
--- /dev/null
+++ b/shared/java/javacommon.gradle
@@ -0,0 +1,124 @@
+apply plugin: 'maven-publish'
+apply plugin: 'java'
+//apply plugin: 'net.ltgt.errorprone'
+
+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 {
+ useJUnitPlatform()
+ systemProperty 'junit.jupiter.extensions.autodetection.enabled', 'true'
+ testLogging {
+ events "failed"
+ exceptionFormat "full"
+ }
+}
+
+if (project.hasProperty('onlyAthena') || project.hasProperty('onlyRaspbian')) {
+ test.enabled = false
+}
+
+repositories {
+ mavenCentral()
+ //maven.url "https://oss.sonatype.org/content/repositories/snapshots/"
+}
+
+sourceSets {
+ dev
+}
+
+tasks.withType(JavaCompile).configureEach {
+ options.compilerArgs = ['--release', '8']
+}
+
+dependencies {
+ testImplementation 'org.junit.jupiter:junit-jupiter-api:5.2.0'
+ testImplementation 'org.junit.jupiter:junit-jupiter-params:5.2.0'
+ testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.2.0'
+
+ devCompile sourceSets.main.output
+
+ //errorprone 'com.google.errorprone:error_prone_core:2.3.2-SNAPSHOT'
+ //errorproneJavac 'com.google.errorprone:error_prone_core:2.3.1'
+}
+
+task run(type: JavaExec) {
+ classpath = sourceSets.dev.runtimeClasspath
+
+ main = project.devMain
+}
+
+build.dependsOn devClasses