blob: 4c57f1f49eddd2e262f8ef54057f75e202cf0cc9 [file] [log] [blame]
Brian Silverman8fce7482020-01-05 13:18:21 -08001apply plugin: 'maven-publish'
2apply plugin: 'java-library'
Brian Silverman8fce7482020-01-05 13:18:21 -08003apply plugin: 'jacoco'
4
5def baseArtifactId = project.baseId
6def artifactGroupId = project.groupId
7def javaBaseName = "_GROUP_edu_wpi_first_${project.baseId}_ID_${project.baseId}-java_CLS"
8
9def outputsFolder = file("$project.buildDir/outputs")
10
11task sourcesJar(type: Jar, dependsOn: classes) {
12 classifier = 'sources'
13 from sourceSets.main.allSource
14}
15
16task javadocJar(type: Jar, dependsOn: javadoc) {
17 classifier = 'javadoc'
18 from javadoc.destinationDir
19}
20
21task outputJar(type: Jar, dependsOn: classes) {
22 archiveBaseName = javaBaseName
23 destinationDirectory = outputsFolder
24 from sourceSets.main.output
25}
26
27task outputSourcesJar(type: Jar, dependsOn: classes) {
28 archiveBaseName = javaBaseName
29 destinationDirectory = outputsFolder
30 classifier = 'sources'
31 from sourceSets.main.allSource
32}
33
34task outputJavadocJar(type: Jar, dependsOn: javadoc) {
35 archiveBaseName = javaBaseName
36 destinationDirectory = outputsFolder
37 classifier = 'javadoc'
38 from javadoc.destinationDir
39}
40
41artifacts {
42 archives sourcesJar
43 archives javadocJar
44 archives outputJar
45 archives outputSourcesJar
46 archives outputJavadocJar
47}
48
49addTaskToCopyAllOutputs(outputSourcesJar)
50addTaskToCopyAllOutputs(outputJavadocJar)
51addTaskToCopyAllOutputs(outputJar)
52
53build.dependsOn outputSourcesJar
54build.dependsOn outputJavadocJar
55build.dependsOn outputJar
56
57project(':').libraryBuild.dependsOn build
58
59publishing {
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
74test {
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 Kuszmaulcf324122023-01-14 14:07:17 -080084if (project.hasProperty('onlylinuxathena') || project.hasProperty('onlylinuxarm32') || project.hasProperty('onlylinuxarm64')) {
Brian Silverman8fce7482020-01-05 13:18:21 -080085 test.enabled = false
86}
87
88repositories {
James Kuszmaulcf324122023-01-14 14:07:17 -080089 maven {
90 url = 'https://frcmaven.wpi.edu/artifactory/ex-mvn'
91 }
Brian Silverman8fce7482020-01-05 13:18:21 -080092 //maven.url "https://oss.sonatype.org/content/repositories/snapshots/"
93}
94
95sourceSets {
96 dev
97}
98
99tasks.withType(JavaCompile).configureEach {
Austin Schuh812d0d12021-11-04 20:16:48 -0700100 options.compilerArgs = [
101 '--release',
102 '11',
103 '-encoding',
James Kuszmaulcf324122023-01-14 14:07:17 -0800104 'UTF8',
105 "-Werror",
106 "-Xlint:all",
107 // ignore AutoCloseable warnings
108 "-Xlint:-try",
109 // ignore missing serialVersionUID warnings
110 "-Xlint:-serial",
Austin Schuh812d0d12021-11-04 20:16:48 -0700111 ]
Brian Silverman8fce7482020-01-05 13:18:21 -0800112}
113
114dependencies {
Austin Schuh75263e32022-02-22 18:05:32 -0800115 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 Silverman8fce7482020-01-05 13:18:21 -0800118
119 devImplementation sourceSets.main.output
Brian Silverman8fce7482020-01-05 13:18:21 -0800120}
121
122task run(type: JavaExec) {
123 classpath = sourceSets.dev.runtimeClasspath
124
Austin Schuh812d0d12021-11-04 20:16:48 -0700125 mainClass = project.devMain
Brian Silverman8fce7482020-01-05 13:18:21 -0800126}
127
128build.dependsOn devClasses
129
130jacoco {
James Kuszmaulcf324122023-01-14 14:07:17 -0800131 toolVersion = "0.8.8"
Brian Silverman8fce7482020-01-05 13:18:21 -0800132}
133
134jacocoTestReport {
135 reports {
Austin Schuh812d0d12021-11-04 20:16:48 -0700136 xml.required = true
137 html.required = true
Brian Silverman8fce7482020-01-05 13:18:21 -0800138 }
139}