build.gradle.kts 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. plugins {
  2. id("otel.javaagent-instrumentation")
  3. }
  4. muzzle {
  5. pass {
  6. group.set("com.google.gwt")
  7. module.set("gwt-servlet")
  8. versions.set("[2.0.0,)")
  9. assertInverse.set(true)
  10. }
  11. // GWT changed group name in 2.10.0
  12. pass {
  13. group.set("org.gwtproject")
  14. module.set("gwt-servlet")
  15. versions.set("[2.10.0,)")
  16. assertInverse.set(true)
  17. }
  18. }
  19. sourceSets {
  20. create("testapp") {
  21. java {
  22. destinationDirectory.set(file("$buildDir/testapp/classes"))
  23. }
  24. resources {
  25. srcDirs("src/webapp")
  26. }
  27. compileClasspath = compileClasspath.plus(sourceSets.main.get().compileClasspath)
  28. }
  29. }
  30. dependencies {
  31. // these are needed for compileGwt task
  32. if (findProperty("testLatestDeps") as Boolean) {
  33. compileOnly("org.gwtproject:gwt-user:+")
  34. compileOnly("org.gwtproject:gwt-dev:+")
  35. compileOnly("org.gwtproject:gwt-servlet:+")
  36. testImplementation("org.gwtproject:gwt-servlet:+")
  37. } else {
  38. compileOnly("com.google.gwt:gwt-user:2.0.0")
  39. compileOnly("com.google.gwt:gwt-dev:2.0.0")
  40. compileOnly("com.google.gwt:gwt-servlet:2.0.0")
  41. testImplementation("com.google.gwt:gwt-servlet:2.0.0")
  42. }
  43. testInstrumentation(project(":instrumentation:servlet:servlet-3.0:javaagent"))
  44. testInstrumentation(project(":instrumentation:servlet:servlet-javax-common:javaagent"))
  45. testInstrumentation(project(":instrumentation:jetty:jetty-8.0:javaagent"))
  46. testImplementation("org.testcontainers:selenium")
  47. testImplementation("org.seleniumhq.selenium:selenium-java:3.141.59")
  48. testImplementation("org.eclipse.jetty:jetty-webapp:9.4.35.v20201120")
  49. }
  50. val warDir = file("$buildDir/testapp/war")
  51. val launcher = javaToolchains.launcherFor {
  52. languageVersion.set(JavaLanguageVersion.of(8))
  53. }
  54. class CompilerArgumentsProvider : CommandLineArgumentProvider {
  55. override fun asArguments(): Iterable<String> = listOf(
  56. "test.gwt.Greeting", // gwt module
  57. "-war", "$buildDir/testapp/war",
  58. "-logLevel", "INFO",
  59. "-localWorkers", "2",
  60. "-compileReport",
  61. "-extra", "$buildDir/testapp/extra",
  62. "-draftCompile", // makes compile a bit faster
  63. )
  64. }
  65. tasks {
  66. val compileGwt by registering(JavaExec::class) {
  67. dependsOn(classes)
  68. // versions before 2.9 require java8
  69. javaLauncher.set(launcher)
  70. outputs.cacheIf { true }
  71. outputs.dir(warDir)
  72. mainClass.set("com.google.gwt.dev.Compiler")
  73. classpath(sourceSets["testapp"].java.srcDirs, sourceSets["testapp"].compileClasspath)
  74. argumentProviders.add(CompilerArgumentsProvider())
  75. }
  76. val copyTestWebapp by registering(Copy::class) {
  77. dependsOn(compileGwt)
  78. from(file("src/testapp/webapp"))
  79. from(warDir)
  80. into(file("$buildDir/testapp/web"))
  81. }
  82. test {
  83. dependsOn(sourceSets["testapp"].output)
  84. dependsOn(copyTestWebapp)
  85. // add test app classes to classpath
  86. classpath = sourceSets.test.get().runtimeClasspath.plus(files("$buildDir/testapp/classes"))
  87. usesService(gradle.sharedServices.registrations["testcontainersBuildService"].getService())
  88. }
  89. }
  90. tasks.withType<Test>().configureEach {
  91. // required on jdk17
  92. jvmArgs("--add-opens=java.base/java.lang=ALL-UNNAMED")
  93. jvmArgs("-XX:+IgnoreUnrecognizedVMOptions")
  94. }