# 주제: messaging-testkit 의 `jmh` 소스셋이 실제로 `build` 태스크 그래프에 들어오는가 # revision: 21234e38cdb9a926cbc92bb97a2aee2e4a7d2916 # 배경: src/build.gradle:501-503 주석이 "the benchmarks are compiled and reviewed on every build # but only *run* on demand" 이라고 주장한다. 그런데 같은 블록의 531-534 줄이 # `spotbugsJmh` 와 `checkstyleJmh` 를 둘 다 `enabled = false` 로 끈다. # 이 두 태스크가 `check` -> `compileJmhJava` 로 가는 유일한 경로이므로, # "꺼진 태스크가 자기 의존성까지 끊는가" 가 주장의 참/거짓을 가른다. # command: ./gradlew :messaging:messaging-testkit:build --dry-run --console=plain -q # (jmh / checkstyle / spotbugs / compileJava / :test 로 필터) # exit: 0 :messaging:messaging-core-api:compileJava SKIPPED :messaging:messaging-schema-api:compileJava SKIPPED :messaging:messaging-policy:compileJava SKIPPED :messaging:messaging-transport-spi:compileJava SKIPPED :messaging:messaging-testkit:compileJava SKIPPED :shared-contract:compileJava SKIPPED :application-core:compileJava SKIPPED :adapter:outbound:support:compileJava SKIPPED :adapter:outbound:cache-redis:compileJava SKIPPED :verifySpotBugsAnalysisFailureContract SKIPPED :messaging:messaging-testkit:testClasses SKIPPED :messaging:messaging-testkit:compileJmhJava SKIPPED :messaging:messaging-testkit:processJmhResources SKIPPED :messaging:messaging-testkit:jmhClasses SKIPPED :messaging:messaging-testkit:checkstyleJmh SKIPPED :messaging:messaging-testkit:checkstyleMain SKIPPED :messaging:messaging-testkit:checkstyleTest SKIPPED :messaging:messaging-testkit:spotbugsJmh SKIPPED :messaging:messaging-testkit:spotbugsMain SKIPPED :messaging:messaging-testkit:spotbugsTest SKIPPED :messaging:messaging-testkit:test SKIPPED # (--dry-run 에서 SKIPPED 는 "그래프에 있으나 실행하지 않음" 을 뜻한다. 전체 그래프 70줄.) # 판정: 주석의 주장은 참이다. # `compileJmhJava` 와 `jmhClasses` 가 `build` 그래프에 들어 있다. # Gradle 에서 `enabled = false` 는 그 태스크의 액션만 건너뛸 뿐 의존성 그래프는 유지하므로, # 꺼진 `checkstyleJmh`/`spotbugsJmh` 가 여전히 `compileJmhJava` 를 끌고 들어온다. # => 벤치마크는 매 빌드에서 컴파일되고(깨지면 빌드가 깨짐), 실행만 `jmh` 태스크에서 온디맨드다. # 이는 "소스셋이 있는데 아무 태스크도 그것을 컴파일하지 않는" 흔한 결함의 반례이며, # 반직관적이라 명시적으로 기록해 둔다. # 참고: `jmh` 소스셋을 받는 리프는 정확히 3개다. # src/build.gradle:506-508 -> :messaging:messaging-kafka, :messaging:messaging-rabbit, # :messaging:messaging-testkit # 저장소 전체 src/jmh 디렉터리는 4개이며 나머지 하나는 # ./adapter/outbound/httpclient/src/jmh (자체 build.gradle 이 별도로 배선)