blob: d83ead2c6e802235059469f22f0b0d75f29ea795 [file] [log] [blame]
Brian Silverman41cdd3e2019-01-19 19:48:58 -08001apply plugin: 'maven-publish'
James Kuszmaul4b81d302019-12-14 20:53:14 -08002apply plugin: 'java-library'
Brian Silverman41cdd3e2019-01-19 19:48:58 -08003//apply plugin: 'net.ltgt.errorprone'
James Kuszmaul4f3ad3c2019-12-01 16:35:21 -08004apply plugin: 'jacoco'
Brian Silverman41cdd3e2019-01-19 19:48:58 -08005
6def baseArtifactId = project.baseId
7def artifactGroupId = project.groupId
8def javaBaseName = "_GROUP_edu_wpi_first_${project.baseId}_ID_${project.baseId}-java_CLS"
9
10def outputsFolder = file("$project.buildDir/outputs")
11
12task sourcesJar(type: Jar, dependsOn: classes) {
13 classifier = 'sources'
14 from sourceSets.main.allSource
15}
16
17task javadocJar(type: Jar, dependsOn: javadoc) {
18 classifier = 'javadoc'
19 from javadoc.destinationDir
20}
21
22task outputJar(type: Jar, dependsOn: classes) {
James Kuszmaul4b81d302019-12-14 20:53:14 -080023 archiveBaseName = javaBaseName
24 destinationDirectory = outputsFolder
Brian Silverman41cdd3e2019-01-19 19:48:58 -080025 from sourceSets.main.output
26}
27
28task outputSourcesJar(type: Jar, dependsOn: classes) {
James Kuszmaul4b81d302019-12-14 20:53:14 -080029 archiveBaseName = javaBaseName
30 destinationDirectory = outputsFolder
Brian Silverman41cdd3e2019-01-19 19:48:58 -080031 classifier = 'sources'
32 from sourceSets.main.allSource
33}
34
35task outputJavadocJar(type: Jar, dependsOn: javadoc) {
James Kuszmaul4b81d302019-12-14 20:53:14 -080036 archiveBaseName = javaBaseName
37 destinationDirectory = outputsFolder
Brian Silverman41cdd3e2019-01-19 19:48:58 -080038 classifier = 'javadoc'
39 from javadoc.destinationDir
40}
41
42artifacts {
43 archives sourcesJar
44 archives javadocJar
45 archives outputJar
46 archives outputSourcesJar
47 archives outputJavadocJar
48}
49
50addTaskToCopyAllOutputs(outputSourcesJar)
51addTaskToCopyAllOutputs(outputJavadocJar)
52addTaskToCopyAllOutputs(outputJar)
53
54build.dependsOn outputSourcesJar
55build.dependsOn outputJavadocJar
56build.dependsOn outputJar
57
58project(':').libraryBuild.dependsOn build
59
60publishing {
61 publications {
62
63 java(MavenPublication) {
64 artifact jar
65 artifact sourcesJar
66 artifact javadocJar
67
68 artifactId = "${baseArtifactId}-java"
69 groupId artifactGroupId
James Kuszmaul4f3ad3c2019-12-01 16:35:21 -080070 version wpilibVersioning.version.get()
Brian Silverman41cdd3e2019-01-19 19:48:58 -080071 }
72 }
73}
74
75test {
76 useJUnitPlatform()
77 systemProperty 'junit.jupiter.extensions.autodetection.enabled', 'true'
78 testLogging {
79 events "failed"
80 exceptionFormat "full"
81 }
James Kuszmaul4f3ad3c2019-12-01 16:35:21 -080082 finalizedBy jacocoTestReport
Brian Silverman41cdd3e2019-01-19 19:48:58 -080083}
84
James Kuszmaul4f3ad3c2019-12-01 16:35:21 -080085if (project.hasProperty('onlylinuxathena') || project.hasProperty('onlylinuxraspbian') || project.hasProperty('onlylinuxaarch64bionic')) {
Brian Silverman41cdd3e2019-01-19 19:48:58 -080086 test.enabled = false
87}
88
89repositories {
90 mavenCentral()
91 //maven.url "https://oss.sonatype.org/content/repositories/snapshots/"
92}
93
94sourceSets {
95 dev
96}
97
98tasks.withType(JavaCompile).configureEach {
James Kuszmaul4f3ad3c2019-12-01 16:35:21 -080099 options.compilerArgs = ['--release', '11']
Brian Silverman41cdd3e2019-01-19 19:48:58 -0800100}
101
102dependencies {
James Kuszmaul4f3ad3c2019-12-01 16:35:21 -0800103 testImplementation 'org.junit.jupiter:junit-jupiter-api:5.4.2'
104 testImplementation 'org.junit.jupiter:junit-jupiter-params:5.4.2'
105 testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.4.2'
Brian Silverman41cdd3e2019-01-19 19:48:58 -0800106
James Kuszmaul4b81d302019-12-14 20:53:14 -0800107 devImplementation sourceSets.main.output
Brian Silverman41cdd3e2019-01-19 19:48:58 -0800108
109 //errorprone 'com.google.errorprone:error_prone_core:2.3.2-SNAPSHOT'
110 //errorproneJavac 'com.google.errorprone:error_prone_core:2.3.1'
111}
112
113task run(type: JavaExec) {
114 classpath = sourceSets.dev.runtimeClasspath
115
116 main = project.devMain
117}
118
119build.dependsOn devClasses
James Kuszmaul4f3ad3c2019-12-01 16:35:21 -0800120
121jacoco {
122 toolVersion = "0.8.4"
123}
124
125jacocoTestReport {
126 reports {
127 xml.enabled true
128 html.enabled true
129 }
130}