Brian Silverman | 8fce748 | 2020-01-05 13:18:21 -0800 | [diff] [blame] | 1 | apply plugin: 'maven-publish' |
| 2 | apply plugin: 'java-library' |
Brian Silverman | 8fce748 | 2020-01-05 13:18:21 -0800 | [diff] [blame] | 3 | apply plugin: 'jacoco' |
| 4 | |
| 5 | def baseArtifactId = project.baseId |
| 6 | def artifactGroupId = project.groupId |
| 7 | def javaBaseName = "_GROUP_edu_wpi_first_${project.baseId}_ID_${project.baseId}-java_CLS" |
| 8 | |
| 9 | def outputsFolder = file("$project.buildDir/outputs") |
| 10 | |
| 11 | task sourcesJar(type: Jar, dependsOn: classes) { |
| 12 | classifier = 'sources' |
| 13 | from sourceSets.main.allSource |
| 14 | } |
| 15 | |
| 16 | task javadocJar(type: Jar, dependsOn: javadoc) { |
| 17 | classifier = 'javadoc' |
| 18 | from javadoc.destinationDir |
| 19 | } |
| 20 | |
| 21 | task outputJar(type: Jar, dependsOn: classes) { |
| 22 | archiveBaseName = javaBaseName |
| 23 | destinationDirectory = outputsFolder |
| 24 | from sourceSets.main.output |
| 25 | } |
| 26 | |
| 27 | task outputSourcesJar(type: Jar, dependsOn: classes) { |
| 28 | archiveBaseName = javaBaseName |
| 29 | destinationDirectory = outputsFolder |
| 30 | classifier = 'sources' |
| 31 | from sourceSets.main.allSource |
| 32 | } |
| 33 | |
| 34 | task outputJavadocJar(type: Jar, dependsOn: javadoc) { |
| 35 | archiveBaseName = javaBaseName |
| 36 | destinationDirectory = outputsFolder |
| 37 | classifier = 'javadoc' |
| 38 | from javadoc.destinationDir |
| 39 | } |
| 40 | |
| 41 | artifacts { |
| 42 | archives sourcesJar |
| 43 | archives javadocJar |
| 44 | archives outputJar |
| 45 | archives outputSourcesJar |
| 46 | archives outputJavadocJar |
| 47 | } |
| 48 | |
| 49 | addTaskToCopyAllOutputs(outputSourcesJar) |
| 50 | addTaskToCopyAllOutputs(outputJavadocJar) |
| 51 | addTaskToCopyAllOutputs(outputJar) |
| 52 | |
| 53 | build.dependsOn outputSourcesJar |
| 54 | build.dependsOn outputJavadocJar |
| 55 | build.dependsOn outputJar |
| 56 | |
| 57 | project(':').libraryBuild.dependsOn build |
| 58 | |
| 59 | publishing { |
| 60 | publications { |
| 61 | |
| 62 | java(MavenPublication) { |
| 63 | artifact jar |
| 64 | artifact sourcesJar |
| 65 | artifact javadocJar |
| 66 | |
| 67 | artifactId = "${baseArtifactId}-java" |
| 68 | groupId artifactGroupId |
| 69 | version wpilibVersioning.version.get() |
| 70 | } |
| 71 | } |
| 72 | } |
| 73 | |
| 74 | test { |
| 75 | useJUnitPlatform() |
| 76 | systemProperty 'junit.jupiter.extensions.autodetection.enabled', 'true' |
| 77 | testLogging { |
| 78 | events "failed" |
| 79 | exceptionFormat "full" |
| 80 | } |
| 81 | finalizedBy jacocoTestReport |
| 82 | } |
| 83 | |
James Kuszmaul | cf32412 | 2023-01-14 14:07:17 -0800 | [diff] [blame] | 84 | if (project.hasProperty('onlylinuxathena') || project.hasProperty('onlylinuxarm32') || project.hasProperty('onlylinuxarm64')) { |
Brian Silverman | 8fce748 | 2020-01-05 13:18:21 -0800 | [diff] [blame] | 85 | test.enabled = false |
| 86 | } |
| 87 | |
| 88 | repositories { |
James Kuszmaul | cf32412 | 2023-01-14 14:07:17 -0800 | [diff] [blame] | 89 | maven { |
| 90 | url = 'https://frcmaven.wpi.edu/artifactory/ex-mvn' |
| 91 | } |
Brian Silverman | 8fce748 | 2020-01-05 13:18:21 -0800 | [diff] [blame] | 92 | //maven.url "https://oss.sonatype.org/content/repositories/snapshots/" |
| 93 | } |
| 94 | |
| 95 | sourceSets { |
| 96 | dev |
| 97 | } |
| 98 | |
| 99 | tasks.withType(JavaCompile).configureEach { |
Austin Schuh | 812d0d1 | 2021-11-04 20:16:48 -0700 | [diff] [blame] | 100 | options.compilerArgs = [ |
| 101 | '--release', |
| 102 | '11', |
| 103 | '-encoding', |
James Kuszmaul | cf32412 | 2023-01-14 14:07:17 -0800 | [diff] [blame] | 104 | 'UTF8', |
| 105 | "-Werror", |
| 106 | "-Xlint:all", |
| 107 | // ignore AutoCloseable warnings |
| 108 | "-Xlint:-try", |
| 109 | // ignore missing serialVersionUID warnings |
| 110 | "-Xlint:-serial", |
Austin Schuh | 812d0d1 | 2021-11-04 20:16:48 -0700 | [diff] [blame] | 111 | ] |
Brian Silverman | 8fce748 | 2020-01-05 13:18:21 -0800 | [diff] [blame] | 112 | } |
| 113 | |
| 114 | dependencies { |
Austin Schuh | 75263e3 | 2022-02-22 18:05:32 -0800 | [diff] [blame] | 115 | testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.2' |
| 116 | testImplementation 'org.junit.jupiter:junit-jupiter-params:5.8.2' |
| 117 | testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.2' |
Brian Silverman | 8fce748 | 2020-01-05 13:18:21 -0800 | [diff] [blame] | 118 | |
| 119 | devImplementation sourceSets.main.output |
Brian Silverman | 8fce748 | 2020-01-05 13:18:21 -0800 | [diff] [blame] | 120 | } |
| 121 | |
| 122 | task run(type: JavaExec) { |
| 123 | classpath = sourceSets.dev.runtimeClasspath |
| 124 | |
Austin Schuh | 812d0d1 | 2021-11-04 20:16:48 -0700 | [diff] [blame] | 125 | mainClass = project.devMain |
Brian Silverman | 8fce748 | 2020-01-05 13:18:21 -0800 | [diff] [blame] | 126 | } |
| 127 | |
| 128 | build.dependsOn devClasses |
| 129 | |
| 130 | jacoco { |
James Kuszmaul | cf32412 | 2023-01-14 14:07:17 -0800 | [diff] [blame] | 131 | toolVersion = "0.8.8" |
Brian Silverman | 8fce748 | 2020-01-05 13:18:21 -0800 | [diff] [blame] | 132 | } |
| 133 | |
| 134 | jacocoTestReport { |
| 135 | reports { |
Austin Schuh | 812d0d1 | 2021-11-04 20:16:48 -0700 | [diff] [blame] | 136 | xml.required = true |
| 137 | html.required = true |
Brian Silverman | 8fce748 | 2020-01-05 13:18:21 -0800 | [diff] [blame] | 138 | } |
| 139 | } |