import java.util.concurrent.Callable import java.util.concurrent.ExecutorService import java.util.concurrent.Executors class RunAsyncTask extends DefaultTask { String taskToExecute = ':persistence:startPersistenceApi' @TaskAction def startAsync() { ExecutorService es = Executors.newSingleThreadExecutor() es.submit({taskToExecute.execute()} as Callable) } } buildscript { repositories { mavenCentral() maven { url 'http://dl.bintray.com/vermeulen-mp/gradle-plugins' } } dependencies { classpath("org.springframework.boot:spring-boot-gradle-plugin:2.0.5.RELEASE") } } plugins { id 'groovy' id 'java' id 'org.jetbrains.kotlin.jvm' version '1.3.11' id 'net.ltgt.apt' version '0.10' id "org.sonarqube" version "2.6" id 'org.unbroken-dome.test-sets' version '1.4.5' id 'war' id "com.wiredforcode.spawn" version "0.8.2" } apply plugin: 'org.springframework.boot' description = 'Pandamonium Theorem Prover' group 'edu.msudenver.tsp' version '1.0' ext['slf4j.version'] = '1.7.22' ext['classmate.version'] = '1.3.1' ext['joda-time.version'] = '2.9.7' def branch = 'git symbolic-ref --short HEAD'.execute().text.trim() sonarqube { properties { property "sonar.projectName", 'Pandamonium Theorem Prover' } } allprojects { sonarqube { properties { property "sonar.host.url", "https://sonarcloud.io" property "sonar.projectKey", "atusa17_ptp" property "sonar.organization", "atusa17-github" property "sonar.login", "9dcc611cd79f175459248b053b25450e36e38463" } } apply plugin: 'java' apply plugin: 'jacoco' apply plugin: 'org.unbroken-dome.test-sets' apply plugin: 'idea' apply plugin: 'io.spring.dependency-management' } subprojects { apply plugin: 'java' repositories { mavenCentral() } dependencies { compile 'org.apache.commons:commons-lang3:3.5' // The production code uses the SLF4J logging API at compile time compile 'org.slf4j:slf4j-api:1.7.21' compile "joda-time:joda-time:2.2" compile('org.springframework:spring-context:5.0.9.RELEASE') compileOnly 'org.projectlombok:lombok:1.18.4' testCompile group: 'junit', name: 'junit', version: '4.11' testCompile group: 'junit', name: 'junit', version: '4.12' testCompile('org.mockito:mockito-core:1.10.19') {exclude(group: 'org.hamcrest')} } test { if (System.properties['test.profile'] != 'integrationTest') { exclude '**/*integrationTest*' } else { exclude '**/*edu/*' } } testSets { unitTest integrationTest } } sourceCompatibility = 1.8 targetCompatibility = 1.8 repositories { mavenCentral() } dependencies { compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8" compile 'org.codehaus.groovy:groovy-all:2.3.11' compile 'org.apache.commons:commons-lang3:3.5' // The production code uses the SLF4J logging API at compile time compile 'org.slf4j:slf4j-api:1.7.22' compile "joda-time:joda-time:2.2" compile group: 'org.springframework.boot', name: 'spring-boot-starter-web', version: '2.0.5.RELEASE' testCompile group: 'junit', name: 'junit', version: '4.12' testCompile "org.springframework:spring-test:5.0.9.RELEASE" testCompile('org.mockito:mockito-core:1.10.19') {exclude(group: 'org.hamcrest')} compileOnly 'org.projectlombok:lombok:1.18.4' apt 'org.projectlombok:lombok:1.18.4' } project(':persistence') { dependencies { compile project(':utilities') } } test { if (System.properties['test.profile'] != 'integrationTest') { exclude '**/*integrationTest*' } else { exclude '**/*edu/*' } } testSets { unitTest integrationTest } task startApi(type: RunAsyncTask) { dependsOn ':persistence:loadDb' dependsOn 'build' taskToExecute = ':persistence:startPersistenceApi' } compileKotlin { kotlinOptions.jvmTarget = "1.8" } compileTestKotlin { kotlinOptions.jvmTarget = "1.8" } wrapper { gradleVersion = '5.2.1' distributionType = Wrapper.DistributionType.ALL }