plugins { id 'java-library' id "jacoco" } tasks.withType(JavaCompile) { options.encoding = 'UTF-8' } apply plugin: 'java' apply plugin: 'eclipse' apply plugin: 'maven-publish' apply plugin: 'signing' repositories { mavenCentral() maven { url = "https://maven.speiger.com/repository/main" } } archivesBaseName = 'Primitive Collections' version = '0.9.0'; sourceCompatibility = targetCompatibility = compileJava.sourceCompatibility = compileJava.targetCompatibility = JavaVersion.current(); System.out.println("Java Version: "+compileJava.sourceCompatibility) javadoc { options.tags = [ "implSpec", "note" ] } eclipse { classpath { downloadJavadoc = true downloadSources = true } } sourceSets { builder } configurations { builderCompile.extendsFrom compile } dependencies { builderImplementation 'com.google.code.gson:gson:2.10' builderImplementation 'de.speiger:Simple-Code-Generator:1.3.0' testImplementation 'junit:junit:4.12' testImplementation 'com.google.guava:guava-testlib:31.0.1-jre' } task generateSource(type: JavaExec) { group = 'internal' description = 'Builds the sourcecode' classpath = sourceSets.builder.runtimeClasspath main = 'speiger.src.builder.PrimitiveCollectionsBuilder' } task generateGithubSource(type: JavaExec) { group = 'internal' description = 'Builds the sourcecode for Github Actions' classpath = sourceSets.builder.runtimeClasspath main = 'speiger.src.builder.PrimitiveCollectionsBuilder' args = ['silent'] } task forceGenerateSource(type: JavaExec) { group = 'internal' description = 'Builds the sourcecode forceful' classpath = sourceSets.builder.runtimeClasspath main = 'speiger.src.builder.PrimitiveCollectionsBuilder' args = ['force'] } task generateTestSource(type: JavaExec) { group = 'internal' description = 'Builds the sourcecode for the Tests' classpath = sourceSets.builder.runtimeClasspath main = 'speiger.src.builder.PrimitiveCollectionsBuilder' args = ['tests', 'silent'] } task forceGenerateTestSource(type: JavaExec) { group = 'internal' description = 'Builds the sourcecode for the Tests' classpath = sourceSets.builder.runtimeClasspath main = 'speiger.src.builder.PrimitiveCollectionsBuilder' args = ['tests', 'silent', 'force'] } task generateLimitSource(type: JavaExec) { group = 'internal' description = 'Builds the Sourcecode with the ModuleSettings.json applied' classpath = sourceSets.builder.runtimeClasspath main = 'speiger.src.builder.PrimitiveCollectionsBuilder' args = ['silent', 'load'] } task javadocJar(type: Jar) { from javadoc archiveClassifier = 'javadoc' } task srcJar(type: Jar) { from sourceSets.main.allSource archiveClassifier = 'sources' } compileJava.dependsOn generateGithubSource javadoc.failOnError = false javadoc.options.memberLevel = JavadocMemberLevel.PUBLIC javadoc.options.quiet() artifacts { archives javadocJar archives srcJar } task testBooleans(type: Test) { group 'tests' description 'Tests all Boolean Collections' filter { excludeTestsMatching "speiger.src.testers.**.*" includeTestsMatching "speiger.src.tests.booleans.**.*" } useJUnit() ignoreFailures = true maxHeapSize = maxMemory } task testBytes(type: Test) { group 'tests' description 'Tests all Byte Collections' filter { excludeTestsMatching "speiger.src.testers.**.*" includeTestsMatching "speiger.src.tests.bytes.**.*" } useJUnit() ignoreFailures = true maxHeapSize = maxMemory maxParallelForks = testThreads as Integer } task testShorts(type: Test) { group 'tests' description 'Tests all Short Collections' filter { excludeTestsMatching "speiger.src.testers.**.*" includeTestsMatching "speiger.src.tests.shorts.**.*" } useJUnit() ignoreFailures = true maxHeapSize = maxMemory maxParallelForks = testThreads as Integer } task testChars(type: Test) { group 'tests' description 'Tests all Character Collections' filter { excludeTestsMatching "speiger.src.testers.**.*" includeTestsMatching "speiger.src.tests.chars.**.*" } useJUnit() ignoreFailures = true maxHeapSize = maxMemory maxParallelForks = testThreads as Integer } task testInts(type: Test) { group 'tests' description 'Tests all Int Collections' filter { excludeTestsMatching "speiger.src.testers.**.*" includeTestsMatching "speiger.src.tests.ints.**.*" } useJUnit() ignoreFailures = true maxHeapSize = maxMemory maxParallelForks = testThreads as Integer } task testLongs(type: Test) { group 'tests' description 'Tests all Long Collections' filter { excludeTestsMatching "speiger.src.testers.**.*" includeTestsMatching "speiger.src.tests.longs.**.*" } useJUnit() ignoreFailures = true maxHeapSize = maxMemory maxParallelForks = testThreads as Integer } task testFloats(type: Test) { group 'tests' description 'Tests all Float Collections' filter { excludeTestsMatching "speiger.src.testers.**.*" includeTestsMatching "speiger.src.tests.floats.**.*" } useJUnit() ignoreFailures = true maxHeapSize = maxMemory maxParallelForks = testThreads as Integer } task testDoubles(type: Test) { group 'tests' description 'Tests all Double Collections' filter { excludeTestsMatching "speiger.src.testers.**.*" includeTestsMatching "speiger.src.tests.doubles.**.*" } useJUnit() ignoreFailures = true maxHeapSize = maxMemory maxParallelForks = testThreads as Integer } task testObjects(type: Test) { group 'tests' description 'Tests all Object Collections' filter { excludeTestsMatching "speiger.src.testers.**.*" includeTestsMatching "speiger.src.tests.objects.**.*" } useJUnit() ignoreFailures = true maxHeapSize = maxMemory maxParallelForks = testThreads as Integer } if(System.getProperty("full_test_suite", "false").toBoolean()) { test.dependsOn testBooleans test.dependsOn testBytes test.dependsOn testShorts test.dependsOn testChars test.dependsOn testInts test.dependsOn testLongs test.dependsOn testFloats test.dependsOn testDoubles test.dependsOn testObjects } test { filter { excludeTestsMatching "speiger.src.testers.**.*" excludeTestsMatching "speiger.src.tests.**.*" excludeTestsMatching "tests.**.*" } useJUnit() ignoreFailures = true maxHeapSize = maxMemory } jacocoTestReport { executionData fileTree(project.buildDir.absolutePath).include("jacoco/*.exec") reports { xml.required = true html.required = true csv.required = true } } task publishToMavenCentral() { dependsOn publish group 'publishing' description 'Publishes to Maven Central' doLast { System.out.println("Published To Maven Central") } } def isPublishingToMavenCentral() { return gradle.startParameter.taskNames.contains('publishToMavenCentral'); } signing { required { isPublishingToMavenCentral() } useGpgCmd() sign configurations.archives } publishing { def isMavenCentral = isPublishingToMavenCentral() publications { mavenJava(MavenPublication) { pom { name = 'Primitive Collections' description = 'A Primitive Collection library that reduces memory usage and improves performance' url = 'https://github.com/Speiger/Primitive-Collections' version = project.version artifactId = project.archivesBaseName.replace(" ", "-") groupId = isMavenCentral ? 'io.github.speiger' : 'de.speiger' from components.java artifact tasks.srcJar artifact tasks.javadocJar licenses { license { name = 'The Apache License, Version 2.0' url = 'http://www.apache.org/licenses/LICENSE-2.0.txt' } } developers { developer { id = 'speiger' name = 'Speiger' } } scm { url = 'https://github.com/Speiger/Primitive-Collections' } issueManagement { system = 'github' url = 'https://github.com/Speiger/Primitive-Collections/issues' } } } } repositories { maven { if(isMavenCentral) { def auth = System.getenv("Maven_Central_Auth")?.split(';'); url version.endsWith('SNAPSHOT') ? "https://s01.oss.sonatype.org/content/repositories/snapshots/" : "https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/" credentials { username auth?[0] password auth?[1] } } else { def auth = System.getenv("Speiger_Maven_Auth")?.split(';'); url version.endsWith('SNAPSHOT') ? "https://maven.speiger.com/repository/debug" : "https://maven.speiger.com/repository/main" credentials(PasswordCredentials) { username auth?[0] password auth?[1] } } } } }