blob: a40938cad118f420d424f23b92f5d0098bd86068 [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
84if (project.hasProperty('onlylinuxathena') || project.hasProperty('onlylinuxraspbian') || project.hasProperty('onlylinuxaarch64bionic')) {
85 test.enabled = false
86}
87
88repositories {
89 mavenCentral()
90 //maven.url "https://oss.sonatype.org/content/repositories/snapshots/"
91}
92
93sourceSets {
94 dev
95}
96
97tasks.withType(JavaCompile).configureEach {
Austin Schuh812d0d12021-11-04 20:16:48 -070098 options.compilerArgs = [
99 '--release',
100 '11',
101 '-encoding',
102 'UTF8'
103 ]
Brian Silverman8fce7482020-01-05 13:18:21 -0800104}
105
106dependencies {
Austin Schuh75263e32022-02-22 18:05:32 -0800107 testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.2'
108 testImplementation 'org.junit.jupiter:junit-jupiter-params:5.8.2'
109 testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.2'
Brian Silverman8fce7482020-01-05 13:18:21 -0800110
111 devImplementation sourceSets.main.output
Brian Silverman8fce7482020-01-05 13:18:21 -0800112}
113
114task run(type: JavaExec) {
115 classpath = sourceSets.dev.runtimeClasspath
116
Austin Schuh812d0d12021-11-04 20:16:48 -0700117 mainClass = project.devMain
Brian Silverman8fce7482020-01-05 13:18:21 -0800118}
119
120build.dependsOn devClasses
121
122jacoco {
Austin Schuh75263e32022-02-22 18:05:32 -0800123 toolVersion = "0.8.7"
Brian Silverman8fce7482020-01-05 13:18:21 -0800124}
125
126jacocoTestReport {
127 reports {
Austin Schuh812d0d12021-11-04 20:16:48 -0700128 xml.required = true
129 html.required = true
Brian Silverman8fce7482020-01-05 13:18:21 -0800130 }
131}