plugins { id 'java' id 'jacoco' id 'maven-publish' id 'com.diffplug.gradle.spotless' version '3.26.0' } allprojects { repositories { mavenCentral() } } java { sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 } project.group = "ai.onnxruntime" version = rootProject.file('../VERSION_NUMBER').text.trim() jar { into("META-INF/maven/$project.group/$project.name") { from { generatePomFileForMavenPublication } rename ".*", "pom.xml" } } // Add explicit sources jar with pom file. task sourcesJar(type: Jar, dependsOn: classes) { classifier = "sources" from sourceSets.main.allSource into("META-INF/maven/$project.group/$project.name") { from { generatePomFileForMavenPublication } rename ".*", "pom.xml" } } // Add explicit javadoc jar with pom file task javadocJar(type: Jar, dependsOn: javadoc) { classifier = "javadoc" from javadoc.destinationDir into("META-INF/maven/$project.group/$project.name") { from { generatePomFileForMavenPublication } rename ".*", "pom.xml" } } wrapper { gradleVersion = '6.1.1' } spotless { java { removeUnusedImports() googleJavaFormat() } format 'gradle', { target '**/*.gradle' trimTrailingWhitespace() indentWithTabs() } } // cmake runs will inform us of the build directory of the current run def cmakeBuildDir = System.properties['cmakeBuildDir'] def cmakeJavaDir = "${cmakeBuildDir}/java" def cmakeNativeLibDir = "${cmakeJavaDir}/native-lib" def cmakeNativeJniDir = "${cmakeJavaDir}/native-jni" def cmakeBuildOutputDir = "${cmakeJavaDir}/build" compileJava { options.compilerArgs += ["-h", "${project.buildDir}/headers/"] } sourceSets.test { // add test resource files resources.srcDirs += [ "${rootProject.projectDir}/../csharp/testdata", "${rootProject.projectDir}/../onnxruntime/test/testdata", "${rootProject.projectDir}/../java/testdata" ] if (cmakeBuildDir != null) { // add compiled native libs resources.srcDirs += [ cmakeNativeLibDir, cmakeNativeJniDir ] } } if (cmakeBuildDir != null) { // generate tasks to be called from cmake task jniJar(type: Jar) { classifier = 'jni' from cmakeNativeJniDir } task libJar(type: Jar) { classifier = 'lib' from cmakeNativeLibDir } task allJar(type: Jar) { into("META-INF/maven/$project.group/$project.name") { from { generatePomFileForMavenPublication } rename ".*", "pom.xml" } classifier = 'all' from sourceSets.main.output from cmakeNativeJniDir from cmakeNativeLibDir } task cmakeBuild(type: Copy) { from project.buildDir include 'libs/**' include 'docs/**' into cmakeBuildOutputDir } cmakeBuild.dependsOn jar cmakeBuild.dependsOn jniJar cmakeBuild.dependsOn libJar cmakeBuild.dependsOn allJar cmakeBuild.dependsOn sourcesJar cmakeBuild.dependsOn javadocJar cmakeBuild.dependsOn javadoc task cmakeCheck(type: Copy) { from project.buildDir include 'reports/**' into cmakeBuildOutputDir } cmakeCheck.dependsOn check } dependencies { testImplementation 'org.junit.jupiter:junit-jupiter-api:5.1.1' testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.1.1' testImplementation 'com.google.protobuf:protobuf-java:3.10.0' } test { useJUnitPlatform() testLogging { events "passed", "skipped", "failed" showStandardStreams = true } } jacocoTestReport { reports { xml.enabled true csv.enabled true html.destination file("${buildDir}/jacocoHtml") } } publishing { publications { maven(MavenPublication) { groupId = project.group artifactId = project.name from components.java pom { name = 'onnx-runtime' description = 'ONNX Runtime is a performance-focused inference engine for ONNX (Open Neural Network Exchange) models.' url = 'https://microsoft.github.io/onnxruntime/' licenses { license { name = 'MIT License' url = 'https://opensource.org/licenses/MIT' } } organization { name = 'Microsoft' url = 'http://www.microsoft.com' } scm { connection = 'scm:git:git://github.com:microsoft/onnxruntime.git' developerConnection = 'scm:git:ssh://github.com/microsoft/onnxruntime.git' url = 'http://github.com/microsoft/onnxruntime' } } } } }