Skip to content

Commit

Permalink
Disable rule and make the classpath uniqueness task verify runtimeCla…
Browse files Browse the repository at this point in the history
…sspath not runtime
  • Loading branch information
dansanduleac committed Sep 6, 2019
1 parent fcb5816 commit c0906e6
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 77 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -16,27 +16,36 @@

package com.palantir.baseline.plugins;

import com.palantir.baseline.plugins.rules.BaselineClassUniquenessRule;
import com.palantir.baseline.tasks.CheckClassUniquenessTask;
import org.gradle.api.Project;
import org.gradle.api.artifacts.Configuration;
import org.gradle.api.plugins.JavaPlugin;
import org.gradle.api.tasks.TaskProvider;
import org.gradle.util.GUtil;

/**
* This plugin is similar to https://github.com/nebula-plugins/gradle-lint-plugin/wiki/Duplicate-Classes-Rule
* but goes one step further and actually hashes any identically named classfiles to figure out if they're
* but goes one step further and actually hashes any identically named class files to figure out if they're
* <i>completely</i> identical (and therefore safely interchangeable).
*
* The task only fails if it finds classes which have the same name but different implementations.
*/
public class BaselineClassUniquenessPlugin extends AbstractBaselinePlugin {
@Override
public final void apply(Project project) {
BaselineClassUniquenessRule rule = new BaselineClassUniquenessRule(project);

project.getTasks().addRule(rule);

project.getPlugins().withId("java", plugin -> {
rule.apply("checkRuntimeClassUniqueness");
project.getTasks().getByName("check")
.dependsOn(project.getTasks().getByName("checkRuntimeClassUniqueness"));
Configuration runtimeClasspath =
project.getConfigurations().getByName(JavaPlugin.RUNTIME_CLASSPATH_CONFIGURATION_NAME);
TaskProvider<CheckClassUniquenessTask> checkRuntimeClasspathTask = project
.getTasks()
.register(taskNameForConfiguration(runtimeClasspath), CheckClassUniquenessTask.class, task -> {
task.setConfiguration(runtimeClasspath);
});
project.getTasks().getByName("check").dependsOn(checkRuntimeClasspathTask);
});
}

private static String taskNameForConfiguration(Configuration configuration) {
return GUtil.toLowerCamelCase("check " + configuration.getName() + " classUniqueness");
}
}

This file was deleted.

0 comments on commit c0906e6

Please sign in to comment.