diff --git a/changelog/@unreleased/pr-1443.v2.yml b/changelog/@unreleased/pr-1443.v2.yml new file mode 100644 index 00000000..5f33388d --- /dev/null +++ b/changelog/@unreleased/pr-1443.v2.yml @@ -0,0 +1,5 @@ +type: improvement +improvement: + description: Properly declare all required dependencies for generated code + links: + - https://github.com/palantir/metric-schema/pull/1443 diff --git a/gradle-metric-schema/build.gradle b/gradle-metric-schema/build.gradle index 2d6eb4b5..b7a88242 100644 --- a/gradle-metric-schema/build.gradle +++ b/gradle-metric-schema/build.gradle @@ -19,6 +19,13 @@ dependencies { testImplementation 'com.netflix.nebula:nebula-test' testImplementation 'commons-io:commons-io' + // These need to contain the dependencies added by the plugin + testRuntimeOnly 'com.google.errorprone:error_prone_annotations' + testRuntimeOnly 'com.palantir.tritium:tritium-registry' + testRuntimeOnly 'com.palantir.safe-logging:preconditions' + testRuntimeOnly 'com.palantir.safe-logging:safe-logging' + testRuntimeOnly 'io.dropwizard.metrics:metrics-core' + compileOnly 'org.immutables:value::annotations' } diff --git a/gradle-metric-schema/src/main/java/com/palantir/metric/schema/gradle/MetricSchemaPlugin.java b/gradle-metric-schema/src/main/java/com/palantir/metric/schema/gradle/MetricSchemaPlugin.java index 2e41aaf5..e3c5a3cb 100644 --- a/gradle-metric-schema/src/main/java/com/palantir/metric/schema/gradle/MetricSchemaPlugin.java +++ b/gradle-metric-schema/src/main/java/com/palantir/metric/schema/gradle/MetricSchemaPlugin.java @@ -125,6 +125,8 @@ private static void configureProjectDependencies(Project project) { project.getDependencies().add("api", "com.palantir.tritium:tritium-registry"); project.getDependencies().add("api", "com.palantir.safe-logging:preconditions"); project.getDependencies().add("api", "com.google.errorprone:error_prone_annotations"); + project.getDependencies().add("implementation", "com.palantir.safe-logging:safe-logging"); + project.getDependencies().add("implementation", "io.dropwizard.metrics:metrics-core"); } private String defaultLibraryName(Project project) { diff --git a/gradle-metric-schema/src/test/groovy/com/palantir/metric/schema/gradle/MetricSchemaPluginIntegrationSpec.groovy b/gradle-metric-schema/src/test/groovy/com/palantir/metric/schema/gradle/MetricSchemaPluginIntegrationSpec.groovy index 4cb56b30..e05e0b8c 100644 --- a/gradle-metric-schema/src/test/groovy/com/palantir/metric/schema/gradle/MetricSchemaPluginIntegrationSpec.groovy +++ b/gradle-metric-schema/src/test/groovy/com/palantir/metric/schema/gradle/MetricSchemaPluginIntegrationSpec.groovy @@ -17,6 +17,8 @@ package com.palantir.metric.schema.gradle import com.google.common.base.Throwables +import com.palantir.gradle.plugintesting.TestContentHelpers + import java.nio.file.Files import java.nio.file.StandardCopyOption import nebula.test.IntegrationSpec @@ -57,6 +59,19 @@ class MetricSchemaPluginIntegrationSpec extends IntegrationSpec { void setup() { buildFile << """ + buildscript { + repositories { + mavenCentral() + gradlePluginPortal() + } + + dependencies { + classpath 'com.palantir.gradle.consistentversions:gradle-consistent-versions:2.32.0' + classpath 'com.palantir.baseline:gradle-baseline-java:6.25.0' + } + } + + apply plugin: 'com.palantir.consistent-versions' allprojects { ${applyPlugin(MetricSchemaPlugin.class)} group 'com.palantir.test' @@ -64,15 +79,16 @@ class MetricSchemaPluginIntegrationSpec extends IntegrationSpec { repositories { mavenCentral() } - - configurations.all { - resolutionStrategy { - force 'com.palantir.tritium:tritium-registry:${Versions.TRITIUM}' - force 'com.palantir.safe-logging:preconditions:${Versions.SAFE_LOGGING}' - } - } } """.stripIndent() + TestContentHelpers.addVersionsToPropsFile(file('versions.props'), [ + 'com.google.errorprone:error_prone_annotations', + 'com.palantir.tritium:tritium-registry', + 'com.palantir.safe-logging:preconditions', + 'com.palantir.safe-logging:safe-logging', + 'io.dropwizard.metrics:metrics-core' + ]) + runTasksSuccessfully('--write-locks') } def 'handles shorthand schema'() { @@ -321,4 +337,24 @@ class MetricSchemaPluginIntegrationSpec extends IntegrationSpec { then: fileExists('foo-server/build/metricSchema/manifest.json') } + + def 'declare exact dependencies'() { + setup: + buildFile << """ + apply plugin: 'com.palantir.baseline' + """.stripIndent(true) + file('src/main/metrics/metrics.yml') << METRICS + + when: + ExecutionResult result = runTasksSuccessfully("classes", "checkImplicitDependencies", "checkUnusedDependencies") + + then: + result.wasExecuted(':generateMetrics') + fileExists("build/generated/sources/metricSchema/java/main/com/palantir/test/ServerMetrics.java") + + result.wasExecuted(":checkImplicitDependenciesMain") + !result.wasSkipped(":checkImplicitDependenciesMain") + result.wasExecuted(":checkUnusedDependenciesMain") + !result.wasSkipped(":checkUnusedDependenciesMain") + } } diff --git a/versions.lock b/versions.lock index 64ad829b..2d7d3971 100644 --- a/versions.lock +++ b/versions.lock @@ -30,7 +30,7 @@ com.palantir.safe-logging:preconditions:3.9.0 (9 constraints: d78d622c) com.palantir.safe-logging:safe-logging:3.9.0 (9 constraints: 259bec48) com.palantir.sls.versions:sls-versions:1.5.0 (1 constraints: 0805ff35) com.palantir.tokens:auth-tokens:3.18.0 (1 constraints: 2410a8a9) -com.palantir.tritium:tritium-ids:0.101.0 (1 constraints: f50f7da6) +com.palantir.tritium:tritium-ids:0.102.0 (1 constraints: f50f7da6) com.palantir.tritium:tritium-registry:0.102.0 (2 constraints: 0c22b8ab) com.squareup:javapoet:1.13.0 (2 constraints: 2b113eee) io.dropwizard.metrics:metrics-core:4.2.33 (2 constraints: 472d0397) diff --git a/versions.props b/versions.props index f8c630d0..ea5be959 100644 --- a/versions.props +++ b/versions.props @@ -8,7 +8,7 @@ org.assertj:assertj-core = 3.27.3 org.immutables:* = 2.11.1 org.mockito:mockito-core = 5.18.0 org.slf4j:* = 2.0.17 -com.palantir.tritium:tritium-registry = 0.102.0 +com.palantir.tritium:* = 0.102.0 com.palantir.conjure.java:* = 8.50.0 com.palantir.conjure.java.runtime:* = 8.22.0 com.palantir.conjure:conjure = 4.51.0