1*3c7ae9deSAndroid Build Coastguard Worker /*
2*3c7ae9deSAndroid Build Coastguard Worker * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3*3c7ae9deSAndroid Build Coastguard Worker * SPDX-License-Identifier: Apache-2.0.
4*3c7ae9deSAndroid Build Coastguard Worker *
5*3c7ae9deSAndroid Build Coastguard Worker * Helpful resources/examples:
6*3c7ae9deSAndroid Build Coastguard Worker * http://gradle.monochromeroad.com/docs/userguide/nativeBinaries.html
7*3c7ae9deSAndroid Build Coastguard Worker * https://github.com/NationalSecurityAgency/ghidra/blob/master/Ghidra/Features/Decompiler/build.gradle
8*3c7ae9deSAndroid Build Coastguard Worker */
9*3c7ae9deSAndroid Build Coastguard Worker
<lambda>null10*3c7ae9deSAndroid Build Coastguard Worker plugins {
11*3c7ae9deSAndroid Build Coastguard Worker `java-library`
12*3c7ae9deSAndroid Build Coastguard Worker `maven-publish`
13*3c7ae9deSAndroid Build Coastguard Worker }
14*3c7ae9deSAndroid Build Coastguard Worker
<lambda>null15*3c7ae9deSAndroid Build Coastguard Worker repositories {
16*3c7ae9deSAndroid Build Coastguard Worker mavenLocal()
17*3c7ae9deSAndroid Build Coastguard Worker maven {
18*3c7ae9deSAndroid Build Coastguard Worker url = uri("https://repo.maven.apache.org/maven2")
19*3c7ae9deSAndroid Build Coastguard Worker }
20*3c7ae9deSAndroid Build Coastguard Worker }
21*3c7ae9deSAndroid Build Coastguard Worker
<lambda>null22*3c7ae9deSAndroid Build Coastguard Worker dependencies {
23*3c7ae9deSAndroid Build Coastguard Worker testImplementation("junit:junit:4.13.2")
24*3c7ae9deSAndroid Build Coastguard Worker testImplementation("commons-cli:commons-cli:1.5.0")
25*3c7ae9deSAndroid Build Coastguard Worker testImplementation("org.mockito:mockito-core:3.11.2")
26*3c7ae9deSAndroid Build Coastguard Worker }
27*3c7ae9deSAndroid Build Coastguard Worker
28*3c7ae9deSAndroid Build Coastguard Worker group = "software.amazon.awssdk.crt"
29*3c7ae9deSAndroid Build Coastguard Worker version = "1.0.0-SNAPSHOT"
30*3c7ae9deSAndroid Build Coastguard Worker description = "software.amazon.awssdk.crt:aws-crt"
31*3c7ae9deSAndroid Build Coastguard Worker
<lambda>null32*3c7ae9deSAndroid Build Coastguard Worker sourceSets {
33*3c7ae9deSAndroid Build Coastguard Worker main {
34*3c7ae9deSAndroid Build Coastguard Worker java {
35*3c7ae9deSAndroid Build Coastguard Worker setSrcDirs(listOf("src/main/java"))
36*3c7ae9deSAndroid Build Coastguard Worker }
37*3c7ae9deSAndroid Build Coastguard Worker // include shared libraries built by cmake/CI/CD in the lib folder
38*3c7ae9deSAndroid Build Coastguard Worker resources {
39*3c7ae9deSAndroid Build Coastguard Worker srcDir("${buildDir}/cmake-build/lib")
40*3c7ae9deSAndroid Build Coastguard Worker }
41*3c7ae9deSAndroid Build Coastguard Worker }
42*3c7ae9deSAndroid Build Coastguard Worker test {
43*3c7ae9deSAndroid Build Coastguard Worker java {
44*3c7ae9deSAndroid Build Coastguard Worker setSrcDirs(listOf("src/test/java"))
45*3c7ae9deSAndroid Build Coastguard Worker }
46*3c7ae9deSAndroid Build Coastguard Worker }
47*3c7ae9deSAndroid Build Coastguard Worker }
48*3c7ae9deSAndroid Build Coastguard Worker
<lambda>null49*3c7ae9deSAndroid Build Coastguard Worker java {
50*3c7ae9deSAndroid Build Coastguard Worker withJavadocJar()
51*3c7ae9deSAndroid Build Coastguard Worker withSourcesJar()
52*3c7ae9deSAndroid Build Coastguard Worker sourceCompatibility = JavaVersion.VERSION_1_8
53*3c7ae9deSAndroid Build Coastguard Worker targetCompatibility = JavaVersion.VERSION_1_8
54*3c7ae9deSAndroid Build Coastguard Worker }
55*3c7ae9deSAndroid Build Coastguard Worker
<lambda>null56*3c7ae9deSAndroid Build Coastguard Worker tasks.compileJava {
57*3c7ae9deSAndroid Build Coastguard Worker dependsOn(":native:cmakeBuild")
58*3c7ae9deSAndroid Build Coastguard Worker }
59*3c7ae9deSAndroid Build Coastguard Worker
<lambda>null60*3c7ae9deSAndroid Build Coastguard Worker tasks.processResources {
61*3c7ae9deSAndroid Build Coastguard Worker // sourceSets includes the compiled libs, so declare the dependency
62*3c7ae9deSAndroid Build Coastguard Worker dependsOn(":native:cmakeBuild")
63*3c7ae9deSAndroid Build Coastguard Worker }
64*3c7ae9deSAndroid Build Coastguard Worker
65*3c7ae9deSAndroid Build Coastguard Worker // withSourcesJar uses output of task :native:cmakeBuild so explicitly declaring dependency:
<lambda>null66*3c7ae9deSAndroid Build Coastguard Worker tasks.named("sourcesJar") {
67*3c7ae9deSAndroid Build Coastguard Worker dependsOn(":native:cmakeBuild")
68*3c7ae9deSAndroid Build Coastguard Worker }
69*3c7ae9deSAndroid Build Coastguard Worker
<lambda>null70*3c7ae9deSAndroid Build Coastguard Worker tasks.test {
71*3c7ae9deSAndroid Build Coastguard Worker useJUnit()
72*3c7ae9deSAndroid Build Coastguard Worker testLogging {
73*3c7ae9deSAndroid Build Coastguard Worker events("passed", "skipped", "failed")
74*3c7ae9deSAndroid Build Coastguard Worker showExceptions = true
75*3c7ae9deSAndroid Build Coastguard Worker showCauses = true
76*3c7ae9deSAndroid Build Coastguard Worker }
77*3c7ae9deSAndroid Build Coastguard Worker for (prop in listOf("certificate", "privatekey", "endpoint", "rootca", "privatekey_p8")) {
78*3c7ae9deSAndroid Build Coastguard Worker if (project.hasProperty(prop)) {
79*3c7ae9deSAndroid Build Coastguard Worker systemProperty(prop, project.property(prop).toString())
80*3c7ae9deSAndroid Build Coastguard Worker }
81*3c7ae9deSAndroid Build Coastguard Worker }
82*3c7ae9deSAndroid Build Coastguard Worker //uncomment the next line to attach the debugger to the JNI layer.
83*3c7ae9deSAndroid Build Coastguard Worker // systemProperty("aws.crt.debugwait", "1")
84*3c7ae9deSAndroid Build Coastguard Worker }
85*3c7ae9deSAndroid Build Coastguard Worker
<lambda>null86*3c7ae9deSAndroid Build Coastguard Worker tasks.compileTestJava {
87*3c7ae9deSAndroid Build Coastguard Worker dependsOn(tasks.compileJava)
88*3c7ae9deSAndroid Build Coastguard Worker }
89*3c7ae9deSAndroid Build Coastguard Worker
<lambda>null90*3c7ae9deSAndroid Build Coastguard Worker publishing {
91*3c7ae9deSAndroid Build Coastguard Worker
92*3c7ae9deSAndroid Build Coastguard Worker repositories {
93*3c7ae9deSAndroid Build Coastguard Worker maven { name = "testLocal"; url = file("${rootProject.buildDir}/m2").toURI() }
94*3c7ae9deSAndroid Build Coastguard Worker }
95*3c7ae9deSAndroid Build Coastguard Worker
96*3c7ae9deSAndroid Build Coastguard Worker publications {
97*3c7ae9deSAndroid Build Coastguard Worker create<MavenPublication>("maven") {
98*3c7ae9deSAndroid Build Coastguard Worker artifactId = project.name
99*3c7ae9deSAndroid Build Coastguard Worker from(components["java"])
100*3c7ae9deSAndroid Build Coastguard Worker pom {
101*3c7ae9deSAndroid Build Coastguard Worker name.set(project.name)
102*3c7ae9deSAndroid Build Coastguard Worker description.set(project.description)
103*3c7ae9deSAndroid Build Coastguard Worker url.set("https://github.com/awslabs/aws-crt-java")
104*3c7ae9deSAndroid Build Coastguard Worker licenses {
105*3c7ae9deSAndroid Build Coastguard Worker license {
106*3c7ae9deSAndroid Build Coastguard Worker name.set("The Apache License, Version 2.0")
107*3c7ae9deSAndroid Build Coastguard Worker url.set("http://www.apache.org/licenses/LICENSE-2.0.txt")
108*3c7ae9deSAndroid Build Coastguard Worker }
109*3c7ae9deSAndroid Build Coastguard Worker }
110*3c7ae9deSAndroid Build Coastguard Worker developers {
111*3c7ae9deSAndroid Build Coastguard Worker developer {
112*3c7ae9deSAndroid Build Coastguard Worker id.set("aws-sdk-common-runtime")
113*3c7ae9deSAndroid Build Coastguard Worker name.set("AWS SDK Common Runtime Team")
114*3c7ae9deSAndroid Build Coastguard Worker email.set("[email protected]")
115*3c7ae9deSAndroid Build Coastguard Worker }
116*3c7ae9deSAndroid Build Coastguard Worker }
117*3c7ae9deSAndroid Build Coastguard Worker scm {
118*3c7ae9deSAndroid Build Coastguard Worker connection.set("scm:git:git://github.com/awslabs/aws-crt-java.git")
119*3c7ae9deSAndroid Build Coastguard Worker developerConnection.set("scm:git:ssh://github.com/awslabs/aws-crt-java.git")
120*3c7ae9deSAndroid Build Coastguard Worker url.set("https://github.com/awslabs/aws-crt-java")
121*3c7ae9deSAndroid Build Coastguard Worker }
122*3c7ae9deSAndroid Build Coastguard Worker }
123*3c7ae9deSAndroid Build Coastguard Worker }
124*3c7ae9deSAndroid Build Coastguard Worker }
125*3c7ae9deSAndroid Build Coastguard Worker repositories {
126*3c7ae9deSAndroid Build Coastguard Worker maven {
127*3c7ae9deSAndroid Build Coastguard Worker val releasesRepo = uri("https://aws.oss.sonatype.org/")
128*3c7ae9deSAndroid Build Coastguard Worker val snapshotRepo = uri("https://aws.oss.sonatype.org/content/repositories/snapshots")
129*3c7ae9deSAndroid Build Coastguard Worker url = if (version.toString().endsWith("SNAPSHOT")) snapshotRepo else releasesRepo
130*3c7ae9deSAndroid Build Coastguard Worker }
131*3c7ae9deSAndroid Build Coastguard Worker }
132*3c7ae9deSAndroid Build Coastguard Worker }
133