plugins { id 'application' id 'jacoco' id 'checkstyle' } application { mainClass = 'ui.Main' } repositories { mavenCentral() } sourceSets { main { java { srcDirs 'src/main/' } resources { srcDirs 'src/resources/' } } test { java { srcDirs 'src/test/' } } } dependencies { implementation files('lib/spec/flatlaf-3.2.5.jar') implementation files('lib/spec/flatlaf-intellij-themes-3.2.5.jar') implementation files('lib/spec/json-20231013.jar') implementation files('lib/spec/zxing-3.5.2.jar') testImplementation files('lib/apiguardian-api-1.1.2.jar') testImplementation files('lib/junit-jupiter-5.8.1.jar') testImplementation files('lib/junit-jupiter-api-5.8.1.jar') testImplementation files('lib/junit-jupiter-engine-5.8.1.jar') testImplementation files('lib/junit-jupiter-params-5.8.1.jar') testImplementation files('lib/junit-platform-commons-1.8.1.jar') testImplementation files('lib/junit-platform-engine-1.8.1.jar') testImplementation files('lib/opentest4j-1.2.0.jar') } test { dependsOn checkstyleMain useJUnitPlatform() finalizedBy jacocoTestReport } jacoco { toolVersion = "0.8.8" } jacocoTestReport { dependsOn test reports { xml.required = false csv.required = false html.outputLocation = layout.buildDirectory.dir('jacocoHtml') } afterEvaluate { classDirectories = files(classDirectories.files.collect { fileTree(dir: it, exclude: ['ui/**']) }) } } tasks.withType(Checkstyle) { reports { xml.required = false html.required = true configFile file('checkstyle.xml') } } tasks.register('uml') { doFirst { renderUML("all") renderUML("type") renderUML("assoc") } dependsOn project(':umlgen').build } ext.renderUML = { scope -> def output = new ByteArrayOutputStream() javaexec { classpath = project(':umlgen').sourceSets.main.runtimeClasspath mainClass = 'moe.yuuta.umlgen.Main' standardOutput = output args "${sourceSets.main.java.srcDirs[1]}", scope } def dot = output.toByteArray() out.close() def input = new ByteArrayInputStream(dot) output = new FileOutputStream("${rootDir}/img/uml.${scope}.pdf") exec { commandLine 'dot', '-Tpdf' standardInput = input standardOutput = output } input.close() output.close() }