build.gradle 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. plugins {
  2. id 'application'
  3. id 'org.gradlex.reproducible-builds' version '1.0'
  4. id 'com.github.spotbugs' version '6.0.26'
  5. id 'io.github.sgtsilvio.gradle.proguard' version '0.7.0'
  6. id 'org.sonarqube' version '6.0.1.5171'
  7. }
  8. repositories {
  9. mavenCentral()
  10. }
  11. dependencies {
  12. spotbugs 'com.github.spotbugs:spotbugs:4.8.6'
  13. spotbugsPlugins 'com.mebigfatguy.fb-contrib:fb-contrib:7.6.8'
  14. proguardClasspath 'com.guardsquare:proguard-base:7.6.0'
  15. implementation 'com.google.guava:guava:33.3.1-jre'
  16. compileOnly 'com.github.spotbugs:spotbugs-annotations:4.8.6'
  17. }
  18. version = '1.0.0'
  19. sonar {
  20. properties {
  21. property "sonar.projectKey", "marek22k_BattleShipMirror"
  22. property "sonar.organization", "marek22k"
  23. property "sonar.host.url", "https://sonarcloud.io"
  24. }
  25. }
  26. spotbugs {
  27. effort = com.github.spotbugs.snom.Effort.valueOf 'MAX'
  28. reportLevel = com.github.spotbugs.snom.Confidence.valueOf 'LOW'
  29. excludeFilter = file 'spotbugs-exclude.xml'
  30. }
  31. sourceSets {
  32. main {
  33. java.srcDirs = ['src']
  34. resources.srcDirs = ['resources']
  35. }
  36. }
  37. java {
  38. toolchain {
  39. languageVersion = JavaLanguageVersion.of 21
  40. }
  41. }
  42. application {
  43. mainClass = 'battleship.Entrypoint'
  44. }
  45. task fatJar(type: Jar) {
  46. dependsOn check
  47. from {
  48. configurations.runtimeClasspath.collect {
  49. it.isDirectory() ? it : zipTree(it)
  50. }
  51. }
  52. manifest {
  53. attributes 'Main-Class' : application.mainClass
  54. }
  55. duplicatesStrategy = DuplicatesStrategy.EXCLUDE
  56. preserveFileTimestamps = false
  57. reproducibleFileOrder = true
  58. includeEmptyDirs = false
  59. archiveClassifier = 'all-in-one'
  60. with jar
  61. }
  62. task proguardedJar(type: io.github.sgtsilvio.gradle.proguard.ProguardTask) {
  63. addInput {
  64. classpath.from(tasks.fatJar)
  65. }
  66. addOutput {
  67. archiveFile.set(base.libsDirectory.file("${project.name}-${project.version}-all-in-one-proguarded.jar"))
  68. }
  69. addLibrary {
  70. classpath.from(configurations.compileClasspath)
  71. }
  72. jdkModules.add 'java.base'
  73. jdkModules.add 'java.desktop'
  74. jdkModules.add 'java.logging'
  75. jdkModules.add 'java.datatransfer'
  76. rulesFiles.from file('battleship.pro')
  77. }