From 0ba30ff2c2061365d745385c70386472b7e177d0 Mon Sep 17 00:00:00 2001 From: Dan Sanduleac Date: Mon, 2 Mar 2020 11:35:55 +0000 Subject: [PATCH 1/8] Add back checkUnusedDependencies.ignore --- .../plugins/BaselineExactDependencies.java | 9 +++- .../CheckUnusedDependenciesParentTask.java | 46 +++++++++++++++++++ .../tasks/CheckUnusedDependenciesTask.java | 9 +++- 3 files changed, 60 insertions(+), 4 deletions(-) create mode 100644 gradle-baseline-java/src/main/groovy/com/palantir/baseline/tasks/CheckUnusedDependenciesParentTask.java diff --git a/gradle-baseline-java/src/main/groovy/com/palantir/baseline/plugins/BaselineExactDependencies.java b/gradle-baseline-java/src/main/groovy/com/palantir/baseline/plugins/BaselineExactDependencies.java index d23757d0a..822249fdf 100644 --- a/gradle-baseline-java/src/main/groovy/com/palantir/baseline/plugins/BaselineExactDependencies.java +++ b/gradle-baseline-java/src/main/groovy/com/palantir/baseline/plugins/BaselineExactDependencies.java @@ -21,6 +21,7 @@ import com.google.common.collect.ImmutableMap.Builder; import com.google.common.collect.ImmutableSet; import com.palantir.baseline.tasks.CheckImplicitDependenciesTask; +import com.palantir.baseline.tasks.CheckUnusedDependenciesParentTask; import com.palantir.baseline.tasks.CheckUnusedDependenciesTask; import java.io.File; import java.io.IOException; @@ -67,7 +68,8 @@ public final class BaselineExactDependencies implements Plugin { @Override public void apply(Project project) { project.getPluginManager().withPlugin("java", plugin -> { - TaskProvider checkUnusedDependencies = project.getTasks().register("checkUnusedDependencies"); + TaskProvider checkUnusedDependencies = + project.getTasks().register("checkUnusedDependencies", CheckUnusedDependenciesParentTask.class); TaskProvider checkImplicitDependencies = project.getTasks().register("checkImplicitDependencies"); project.getConvention() @@ -81,7 +83,7 @@ public void apply(Project project) { private static void configureSourceSet( Project project, SourceSet sourceSet, - TaskProvider checkUnusedDependencies, + TaskProvider checkUnusedDependencies, TaskProvider checkImplicitDependencies) { Configuration implementation = project.getConfigurations().getByName(sourceSet.getImplementationConfigurationName()); @@ -156,6 +158,9 @@ private static void configureSourceSet( // this is liberally applied to ease the Java8 -> 11 transition task.ignore("javax.annotation", "javax.annotation-api"); + + // pick up ignores configured globally on the parent task + task.ignore(checkUnusedDependencies.get().getIgnore()); }); checkUnusedDependencies.configure(task -> task.dependsOn(sourceSetUnusedDependencies)); TaskProvider sourceSetCheckImplicitDependencies = project.getTasks() diff --git a/gradle-baseline-java/src/main/groovy/com/palantir/baseline/tasks/CheckUnusedDependenciesParentTask.java b/gradle-baseline-java/src/main/groovy/com/palantir/baseline/tasks/CheckUnusedDependenciesParentTask.java new file mode 100644 index 000000000..0fffaf47c --- /dev/null +++ b/gradle-baseline-java/src/main/groovy/com/palantir/baseline/tasks/CheckUnusedDependenciesParentTask.java @@ -0,0 +1,46 @@ +/* + * (c) Copyright 2020 Palantir Technologies Inc. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.palantir.baseline.tasks; + +import java.util.Collections; +import java.util.Set; +import org.gradle.api.DefaultTask; +import org.gradle.api.provider.Provider; +import org.gradle.api.provider.SetProperty; + +public final class CheckUnusedDependenciesParentTask extends DefaultTask { + private final SetProperty ignore; + + public CheckUnusedDependenciesParentTask() { + ignore = getProject().getObjects().setProperty(String.class); + ignore.set(Collections.emptySet()); + } + + /** Ignores these coordinates for all source sets. */ + public final void ignore(Provider> value) { + ignore.addAll(value); + } + + /** Ignores this coordinate for all source sets. */ + public final void ignore(String group, String name) { + ignore.add(CheckUnusedDependenciesTask.ignoreCoordinate(group, name)); + } + + public Provider> getIgnore() { + return ignore; + } +} diff --git a/gradle-baseline-java/src/main/groovy/com/palantir/baseline/tasks/CheckUnusedDependenciesTask.java b/gradle-baseline-java/src/main/groovy/com/palantir/baseline/tasks/CheckUnusedDependenciesTask.java index 3deb81936..06cbd57d6 100644 --- a/gradle-baseline-java/src/main/groovy/com/palantir/baseline/tasks/CheckUnusedDependenciesTask.java +++ b/gradle-baseline-java/src/main/groovy/com/palantir/baseline/tasks/CheckUnusedDependenciesTask.java @@ -190,6 +190,7 @@ public final Provider> getSourceOnlyConfigurations() { return sourceOnlyConfigurations; } + @Deprecated public final void sourceOnlyConfiguration(Configuration configuration) { Preconditions.checkNotNull(configuration, "This method requires a non-null configuration"); Preconditions.checkArgument( @@ -209,11 +210,15 @@ public final void setSourceClasses(FileCollection newClasses) { } public final void ignore(Provider> value) { - ignore.set(value); + ignore.addAll(value); } public final void ignore(String group, String name) { - ignore.add(group + ":" + name); + ignore.add(ignoreCoordinate(group, name)); + } + + static String ignoreCoordinate(String group, String name) { + return group + ":" + name; } @Input From dbba2ac450fbe81168287c3ea773e6b38ba23bb2 Mon Sep 17 00:00:00 2001 From: Dan Sanduleac Date: Mon, 2 Mar 2020 11:43:04 +0000 Subject: [PATCH 2/8] not final --- .../baseline/tasks/CheckUnusedDependenciesParentTask.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle-baseline-java/src/main/groovy/com/palantir/baseline/tasks/CheckUnusedDependenciesParentTask.java b/gradle-baseline-java/src/main/groovy/com/palantir/baseline/tasks/CheckUnusedDependenciesParentTask.java index 0fffaf47c..b7f11c9f2 100644 --- a/gradle-baseline-java/src/main/groovy/com/palantir/baseline/tasks/CheckUnusedDependenciesParentTask.java +++ b/gradle-baseline-java/src/main/groovy/com/palantir/baseline/tasks/CheckUnusedDependenciesParentTask.java @@ -22,7 +22,7 @@ import org.gradle.api.provider.Provider; import org.gradle.api.provider.SetProperty; -public final class CheckUnusedDependenciesParentTask extends DefaultTask { +public class CheckUnusedDependenciesParentTask extends DefaultTask { private final SetProperty ignore; public CheckUnusedDependenciesParentTask() { From 1bfc6874440680435b018d874daa684aa9dd1057 Mon Sep 17 00:00:00 2001 From: Dan Sanduleac Date: Mon, 2 Mar 2020 11:43:04 +0000 Subject: [PATCH 3/8] Add generated changelog entries --- changelog/@unreleased/pr-1273.v2.yml | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 changelog/@unreleased/pr-1273.v2.yml diff --git a/changelog/@unreleased/pr-1273.v2.yml b/changelog/@unreleased/pr-1273.v2.yml new file mode 100644 index 000000000..7de4d13f8 --- /dev/null +++ b/changelog/@unreleased/pr-1273.v2.yml @@ -0,0 +1,6 @@ +type: fix +fix: + description: Bring back the `ignore(String, String)` method on the `checkUnusedDependencies` + task. This now ignores the coordinate for all source sets. + links: + - https://github.com/palantir/gradle-baseline/pull/1273 From 18899c745836a06cf96c964565800f5fca78a3ec Mon Sep 17 00:00:00 2001 From: Dan Sanduleac Date: Mon, 2 Mar 2020 11:47:58 +0000 Subject: [PATCH 4/8] Also propagate ignores for checkImplicitDependencies --- .../plugins/BaselineExactDependencies.java | 14 ++++-- .../CheckImplicitDependenciesParentTask.java | 47 +++++++++++++++++++ .../tasks/CheckImplicitDependenciesTask.java | 2 +- .../CheckUnusedDependenciesParentTask.java | 3 +- .../tasks/CheckUnusedDependenciesTask.java | 6 +-- 5 files changed, 62 insertions(+), 10 deletions(-) create mode 100644 gradle-baseline-java/src/main/groovy/com/palantir/baseline/tasks/CheckImplicitDependenciesParentTask.java diff --git a/gradle-baseline-java/src/main/groovy/com/palantir/baseline/plugins/BaselineExactDependencies.java b/gradle-baseline-java/src/main/groovy/com/palantir/baseline/plugins/BaselineExactDependencies.java index 822249fdf..b1e17507e 100644 --- a/gradle-baseline-java/src/main/groovy/com/palantir/baseline/plugins/BaselineExactDependencies.java +++ b/gradle-baseline-java/src/main/groovy/com/palantir/baseline/plugins/BaselineExactDependencies.java @@ -20,6 +20,7 @@ import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableMap.Builder; import com.google.common.collect.ImmutableSet; +import com.palantir.baseline.tasks.CheckImplicitDependenciesParentTask; import com.palantir.baseline.tasks.CheckImplicitDependenciesTask; import com.palantir.baseline.tasks.CheckUnusedDependenciesParentTask; import com.palantir.baseline.tasks.CheckUnusedDependenciesTask; @@ -39,7 +40,6 @@ import org.apache.maven.shared.dependency.analyzer.asm.ASMDependencyAnalyzer; import org.gradle.api.Plugin; import org.gradle.api.Project; -import org.gradle.api.Task; import org.gradle.api.artifacts.Configuration; import org.gradle.api.artifacts.ExcludeRule; import org.gradle.api.artifacts.ModuleVersionIdentifier; @@ -70,7 +70,8 @@ public void apply(Project project) { project.getPluginManager().withPlugin("java", plugin -> { TaskProvider checkUnusedDependencies = project.getTasks().register("checkUnusedDependencies", CheckUnusedDependenciesParentTask.class); - TaskProvider checkImplicitDependencies = project.getTasks().register("checkImplicitDependencies"); + TaskProvider checkImplicitDependencies = + project.getTasks().register("checkImplicitDependencies", CheckImplicitDependenciesParentTask.class); project.getConvention() .getPlugin(JavaPluginConvention.class) @@ -84,7 +85,7 @@ private static void configureSourceSet( Project project, SourceSet sourceSet, TaskProvider checkUnusedDependencies, - TaskProvider checkImplicitDependencies) { + TaskProvider checkImplicitDependencies) { Configuration implementation = project.getConfigurations().getByName(sourceSet.getImplementationConfigurationName()); Configuration compile = project.getConfigurations().getByName(sourceSet.getCompileConfigurationName()); @@ -173,6 +174,9 @@ private static void configureSourceSet( task.dependenciesConfiguration(compileClasspath); task.ignore("org.slf4j", "slf4j-api"); + + // pick up ignores configured globally on the parent task + task.ignore(checkImplicitDependencies.get().getIgnore()); }); checkImplicitDependencies.configure(task -> task.dependsOn(sourceSetCheckImplicitDependencies)); } @@ -286,4 +290,8 @@ public ResolvedDependency artifactsFromDependency(ResolvedArtifact resolvedArtif artifactsFromDependency.get(resolvedArtifact), "Unable to find resolved artifact"); } } + + public static String ignoreCoordinate(String group, String name) { + return group + ":" + name; + } } diff --git a/gradle-baseline-java/src/main/groovy/com/palantir/baseline/tasks/CheckImplicitDependenciesParentTask.java b/gradle-baseline-java/src/main/groovy/com/palantir/baseline/tasks/CheckImplicitDependenciesParentTask.java new file mode 100644 index 000000000..1ed804b93 --- /dev/null +++ b/gradle-baseline-java/src/main/groovy/com/palantir/baseline/tasks/CheckImplicitDependenciesParentTask.java @@ -0,0 +1,47 @@ +/* + * (c) Copyright 2020 Palantir Technologies Inc. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.palantir.baseline.tasks; + +import com.palantir.baseline.plugins.BaselineExactDependencies; +import java.util.Collections; +import java.util.Set; +import org.gradle.api.DefaultTask; +import org.gradle.api.provider.Provider; +import org.gradle.api.provider.SetProperty; + +public class CheckImplicitDependenciesParentTask extends DefaultTask { + private final SetProperty ignore; + + public CheckImplicitDependenciesParentTask() { + ignore = getProject().getObjects().setProperty(String.class); + ignore.set(Collections.emptySet()); + } + + /** Ignores these coordinates for all source sets. */ + public final void ignore(Provider> value) { + ignore.addAll(value); + } + + /** Ignores this coordinate for all source sets. */ + public final void ignore(String group, String name) { + ignore.add(BaselineExactDependencies.ignoreCoordinate(group, name)); + } + + public Provider> getIgnore() { + return ignore; + } +} diff --git a/gradle-baseline-java/src/main/groovy/com/palantir/baseline/tasks/CheckImplicitDependenciesTask.java b/gradle-baseline-java/src/main/groovy/com/palantir/baseline/tasks/CheckImplicitDependenciesTask.java index 3825277ee..352bd571b 100644 --- a/gradle-baseline-java/src/main/groovy/com/palantir/baseline/tasks/CheckImplicitDependenciesTask.java +++ b/gradle-baseline-java/src/main/groovy/com/palantir/baseline/tasks/CheckImplicitDependenciesTask.java @@ -165,7 +165,7 @@ public final void ignore(Provider> value) { } public final void ignore(String group, String name) { - ignore.add(group + ":" + name); + ignore.add(BaselineExactDependencies.ignoreCoordinate(group, name)); } @Input diff --git a/gradle-baseline-java/src/main/groovy/com/palantir/baseline/tasks/CheckUnusedDependenciesParentTask.java b/gradle-baseline-java/src/main/groovy/com/palantir/baseline/tasks/CheckUnusedDependenciesParentTask.java index b7f11c9f2..7f480ab6d 100644 --- a/gradle-baseline-java/src/main/groovy/com/palantir/baseline/tasks/CheckUnusedDependenciesParentTask.java +++ b/gradle-baseline-java/src/main/groovy/com/palantir/baseline/tasks/CheckUnusedDependenciesParentTask.java @@ -16,6 +16,7 @@ package com.palantir.baseline.tasks; +import com.palantir.baseline.plugins.BaselineExactDependencies; import java.util.Collections; import java.util.Set; import org.gradle.api.DefaultTask; @@ -37,7 +38,7 @@ public final void ignore(Provider> value) { /** Ignores this coordinate for all source sets. */ public final void ignore(String group, String name) { - ignore.add(CheckUnusedDependenciesTask.ignoreCoordinate(group, name)); + ignore.add(BaselineExactDependencies.ignoreCoordinate(group, name)); } public Provider> getIgnore() { diff --git a/gradle-baseline-java/src/main/groovy/com/palantir/baseline/tasks/CheckUnusedDependenciesTask.java b/gradle-baseline-java/src/main/groovy/com/palantir/baseline/tasks/CheckUnusedDependenciesTask.java index 06cbd57d6..578a1689d 100644 --- a/gradle-baseline-java/src/main/groovy/com/palantir/baseline/tasks/CheckUnusedDependenciesTask.java +++ b/gradle-baseline-java/src/main/groovy/com/palantir/baseline/tasks/CheckUnusedDependenciesTask.java @@ -214,11 +214,7 @@ public final void ignore(Provider> value) { } public final void ignore(String group, String name) { - ignore.add(ignoreCoordinate(group, name)); - } - - static String ignoreCoordinate(String group, String name) { - return group + ":" + name; + ignore.add(BaselineExactDependencies.ignoreCoordinate(group, name)); } @Input From d496e2c012bd4cd93a93b814c719b03bf6d4c83f Mon Sep 17 00:00:00 2001 From: Dan Sanduleac Date: Mon, 2 Mar 2020 11:49:33 +0000 Subject: [PATCH 5/8] mark as internal so gradle stops complaining --- .../baseline/tasks/CheckImplicitDependenciesParentTask.java | 2 ++ .../baseline/tasks/CheckUnusedDependenciesParentTask.java | 2 ++ 2 files changed, 4 insertions(+) diff --git a/gradle-baseline-java/src/main/groovy/com/palantir/baseline/tasks/CheckImplicitDependenciesParentTask.java b/gradle-baseline-java/src/main/groovy/com/palantir/baseline/tasks/CheckImplicitDependenciesParentTask.java index 1ed804b93..7e09ea524 100644 --- a/gradle-baseline-java/src/main/groovy/com/palantir/baseline/tasks/CheckImplicitDependenciesParentTask.java +++ b/gradle-baseline-java/src/main/groovy/com/palantir/baseline/tasks/CheckImplicitDependenciesParentTask.java @@ -22,6 +22,7 @@ import org.gradle.api.DefaultTask; import org.gradle.api.provider.Provider; import org.gradle.api.provider.SetProperty; +import org.gradle.api.tasks.Internal; public class CheckImplicitDependenciesParentTask extends DefaultTask { private final SetProperty ignore; @@ -41,6 +42,7 @@ public final void ignore(String group, String name) { ignore.add(BaselineExactDependencies.ignoreCoordinate(group, name)); } + @Internal public Provider> getIgnore() { return ignore; } diff --git a/gradle-baseline-java/src/main/groovy/com/palantir/baseline/tasks/CheckUnusedDependenciesParentTask.java b/gradle-baseline-java/src/main/groovy/com/palantir/baseline/tasks/CheckUnusedDependenciesParentTask.java index 7f480ab6d..5ce14c470 100644 --- a/gradle-baseline-java/src/main/groovy/com/palantir/baseline/tasks/CheckUnusedDependenciesParentTask.java +++ b/gradle-baseline-java/src/main/groovy/com/palantir/baseline/tasks/CheckUnusedDependenciesParentTask.java @@ -22,6 +22,7 @@ import org.gradle.api.DefaultTask; import org.gradle.api.provider.Provider; import org.gradle.api.provider.SetProperty; +import org.gradle.api.tasks.Internal; public class CheckUnusedDependenciesParentTask extends DefaultTask { private final SetProperty ignore; @@ -41,6 +42,7 @@ public final void ignore(String group, String name) { ignore.add(BaselineExactDependencies.ignoreCoordinate(group, name)); } + @Internal public Provider> getIgnore() { return ignore; } From 871f405181c1293ab905c7d5df7c0780a35fe09d Mon Sep 17 00:00:00 2001 From: Dan Sanduleac Date: Mon, 2 Mar 2020 11:54:17 +0000 Subject: [PATCH 6/8] checkstyle DFE --- .../baseline/tasks/CheckImplicitDependenciesParentTask.java | 2 +- .../baseline/tasks/CheckUnusedDependenciesParentTask.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/gradle-baseline-java/src/main/groovy/com/palantir/baseline/tasks/CheckImplicitDependenciesParentTask.java b/gradle-baseline-java/src/main/groovy/com/palantir/baseline/tasks/CheckImplicitDependenciesParentTask.java index 7e09ea524..98cf15ec8 100644 --- a/gradle-baseline-java/src/main/groovy/com/palantir/baseline/tasks/CheckImplicitDependenciesParentTask.java +++ b/gradle-baseline-java/src/main/groovy/com/palantir/baseline/tasks/CheckImplicitDependenciesParentTask.java @@ -43,7 +43,7 @@ public final void ignore(String group, String name) { } @Internal - public Provider> getIgnore() { + public final Provider> getIgnore() { return ignore; } } diff --git a/gradle-baseline-java/src/main/groovy/com/palantir/baseline/tasks/CheckUnusedDependenciesParentTask.java b/gradle-baseline-java/src/main/groovy/com/palantir/baseline/tasks/CheckUnusedDependenciesParentTask.java index 5ce14c470..a590a41ee 100644 --- a/gradle-baseline-java/src/main/groovy/com/palantir/baseline/tasks/CheckUnusedDependenciesParentTask.java +++ b/gradle-baseline-java/src/main/groovy/com/palantir/baseline/tasks/CheckUnusedDependenciesParentTask.java @@ -43,7 +43,7 @@ public final void ignore(String group, String name) { } @Internal - public Provider> getIgnore() { + public final Provider> getIgnore() { return ignore; } } From ab052a4f0d8308eadd88ed4552d425ec87e25e49 Mon Sep 17 00:00:00 2001 From: Dan Sanduleac Date: Mon, 2 Mar 2020 11:56:49 +0000 Subject: [PATCH 7/8] fix checkstyle by adding docs --- .../baseline/tasks/CheckUnusedDependenciesTask.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/gradle-baseline-java/src/main/groovy/com/palantir/baseline/tasks/CheckUnusedDependenciesTask.java b/gradle-baseline-java/src/main/groovy/com/palantir/baseline/tasks/CheckUnusedDependenciesTask.java index 578a1689d..5f5454eb3 100644 --- a/gradle-baseline-java/src/main/groovy/com/palantir/baseline/tasks/CheckUnusedDependenciesTask.java +++ b/gradle-baseline-java/src/main/groovy/com/palantir/baseline/tasks/CheckUnusedDependenciesTask.java @@ -139,8 +139,8 @@ public final void checkUnusedDependencies() { } /** - * Excludes compileOnly and annotationProcessor dependencies as they would be incorrectly flagged as unused by this - * task due to BaselineExactDependencies use of + * Excludes any source only dependencies configured by the user, as they would be incorrectly flagged as unused by + * this task due to BaselineExactDependencies use of * {@link org.apache.maven.shared.dependency.analyzer.asm.ASMDependencyAnalyzer} which only looks at the * dependencies of the generated byte-code, not the union of compile + runtime dependencies. */ @@ -190,6 +190,12 @@ public final Provider> getSourceOnlyConfigurations() { return sourceOnlyConfigurations; } + /** + * Don't use this unless this configuration is resolvable. + * + * @deprecated This task only looks at directly declared compile dependencies that also appear in the + * runtime classpath, so there's no need to exclude anything like {@code compileOnly} anymore. + */ @Deprecated public final void sourceOnlyConfiguration(Configuration configuration) { Preconditions.checkNotNull(configuration, "This method requires a non-null configuration"); From 111f38c0ea0571a4477117d7d503f4d63afb8640 Mon Sep 17 00:00:00 2001 From: Dan Sanduleac Date: Mon, 2 Mar 2020 11:56:49 +0000 Subject: [PATCH 8/8] Add generated changelog entries --- changelog/@unreleased/pr-1273.v2.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/changelog/@unreleased/pr-1273.v2.yml b/changelog/@unreleased/pr-1273.v2.yml index 7de4d13f8..341fa658d 100644 --- a/changelog/@unreleased/pr-1273.v2.yml +++ b/changelog/@unreleased/pr-1273.v2.yml @@ -1,6 +1,7 @@ type: fix fix: - description: Bring back the `ignore(String, String)` method on the `checkUnusedDependencies` - task. This now ignores the coordinate for all source sets. + description: Bring back the `ignore(String, String)` method on the `checkUnusedDependencies` and + `checkImplicitDependencies` tasks. This now ignores the coordinate for all source + sets. links: - https://github.com/palantir/gradle-baseline/pull/1273