aboutsummaryrefslogtreecommitdiff
path: root/build.gradle
blob: 98fe629ed86c741aa267025e2276359cc80a795c (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
buildscript {
  repositories {
    mavenCentral()
    gradlePluginPortal()
    mavenLocal()
    google()
    maven { url = 'https://central.sonatype.com/repository/maven-snapshots/' }
  }
  dependencies {
  }
}

plugins {
  id 'com.diffplug.spotless' version '6.25.0' apply false
}

allprojects {
  apply plugin: 'eclipse'
  apply plugin: 'idea'

  // This allows you to "Build and run using IntelliJ IDEA", an option in IDEA's Settings.
  idea {
    module {
      outputDir = file('build/classes/java/main')
      testOutputDir = file('build/classes/java/test')
    }
  }
}

configure(subprojects) {
  apply plugin: 'java-library'
  apply plugin: 'com.diffplug.spotless'

  java {
    toolchain {
      languageVersion = JavaLanguageVersion.of(24)
    }
  }
  java.sourceCompatibility = 24

  // Spotless code formatting
  spotless {
    java {
      eclipse()
      target '**/src/**/*.java'
    }
  }

  // Lombok configuration
  dependencies {
    compileOnly 'org.projectlombok:lombok:1.18.42'
    compileOnly 'jakarta.annotation:jakarta.annotation-api:2.1.1'
    annotationProcessor 'org.projectlombok:lombok:1.18.42'
    testCompileOnly 'org.projectlombok:lombok:1.18.42'
    testAnnotationProcessor 'org.projectlombok:lombok:1.18.42'

    // JUnit 5 + Mockito testing
    testImplementation platform('org.junit:junit-bom:5.14.2')
    testImplementation 'org.junit.jupiter:junit-jupiter'
    testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
    testImplementation 'org.mockito:mockito-core:5.8.0'
    testImplementation 'org.mockito:mockito-junit-jupiter:5.8.0'
  }

  test {
    testLogging {
      events 'passed', 'skipped', 'failed'
    }
    useJUnitPlatform()
    jvmArgs '-Dnet.bytebuddy.experimental=true'
  }

  // From https://lyze.dev/2021/04/29/libGDX-Internal-Assets-List/
  // The article can be helpful when using assets.txt in your project.
  tasks.register('generateAssetList') {
    inputs.dir("${project.rootDir}/assets/")
    // projectFolder/assets
    File assetsFolder = new File("${project.rootDir}/assets/")
    // projectFolder/assets/assets.txt
    File assetsFile = new File(assetsFolder, "assets.txt")
    // delete that file in case we've already created it
    assetsFile.delete()

    // iterate through all files inside that folder
    // convert it to a relative path
    // and append it to the file assets.txt
    fileTree(assetsFolder).collect { assetsFolder.relativePath(it) }.sort().each {
      assetsFile.append(it + "\n")
    }
  }
  processResources.dependsOn 'generateAssetList'

  compileJava {
    options.incremental = true
  }
}

subprojects {
  version = "$projectVersion"
  ext.appName = 'The Abstraction Engine'
  repositories {
    mavenCentral()
    // You may want to remove the following line if you have errors downloading dependencies.
    mavenLocal()
    maven { url = 'https://central.sonatype.com/repository/maven-snapshots/' }
    maven { url = 'https://jitpack.io' }
  }
}

eclipse.project.name = 'The Abstraction Engine' + '-parent'