build.gradle.kts 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  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(layout.buildDirectory.dir("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:4.8.3")
  48. testImplementation("org.eclipse.jetty:jetty-webapp:9.4.35.v20201120")
  49. }
  50. val warDir = layout.buildDirectory.dir("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. // gwt module
  57. "test.gwt.Greeting",
  58. "-war", layout.buildDirectory.dir("testapp/war").get().asFile.absolutePath,
  59. "-logLevel", "INFO",
  60. "-localWorkers", "2",
  61. "-compileReport",
  62. "-extra", layout.buildDirectory.dir("testapp/extra").get().asFile.absolutePath,
  63. // makes compile a bit faster
  64. "-draftCompile",
  65. )
  66. }
  67. tasks {
  68. val compileGwt by registering(JavaExec::class) {
  69. dependsOn(classes)
  70. // versions before 2.9 require java8
  71. javaLauncher.set(launcher)
  72. outputs.cacheIf { true }
  73. outputs.dir(warDir)
  74. mainClass.set("com.google.gwt.dev.Compiler")
  75. classpath(sourceSets["testapp"].java.srcDirs, sourceSets["testapp"].compileClasspath)
  76. argumentProviders.add(CompilerArgumentsProvider())
  77. }
  78. val copyTestWebapp by registering(Copy::class) {
  79. dependsOn(compileGwt)
  80. from(file("src/testapp/webapp"))
  81. from(warDir)
  82. into(file(layout.buildDirectory.dir("testapp/web")))
  83. }
  84. test {
  85. dependsOn(sourceSets["testapp"].output)
  86. dependsOn(copyTestWebapp)
  87. // add test app classes to classpath
  88. classpath = sourceSets.test.get().runtimeClasspath.plus(files(layout.buildDirectory.dir("testapp/classes")))
  89. usesService(gradle.sharedServices.registrations["testcontainersBuildService"].service)
  90. }
  91. }
  92. tasks.withType<Test>().configureEach {
  93. // required on jdk17
  94. jvmArgs("--add-opens=java.base/java.lang=ALL-UNNAMED")
  95. jvmArgs("-XX:+IgnoreUnrecognizedVMOptions")
  96. }