Ver Fonte

Remove MergePlugin

This is no longer used and we should favor shadow plugin instead.

Issue gh-9539
Rob Winch há 4 anos atrás
pai
commit
bfec10b0c7

+ 0 - 182
buildSrc/src/main/groovy/io/spring/gradle/convention/MergePlugin.groovy

@@ -1,182 +0,0 @@
-/*
- * Copyright 2002-2015 the original author or authors.
- *
- * 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
- *
- *      https://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 io.spring.gradle.convention
-
-import org.gradle.api.*
-import org.gradle.api.artifacts.Configuration
-import org.gradle.api.artifacts.ProjectDependency;
-import org.gradle.api.artifacts.maven.Conf2ScopeMapping
-import org.gradle.api.plugins.MavenPlugin
-import org.gradle.plugins.ide.eclipse.EclipsePlugin
-import org.gradle.plugins.ide.idea.IdeaPlugin
-import org.gradle.api.invocation.*
-
-/**
- * Gradle plugin that allows projects to merged together. Primarily developed to
- * allow Spring to support multiple incompatible versions of third-party
- * dependencies (for example Hibernate v3 and v4).
- * <p>
- * The 'merge' extension should be used to define how projects are merged, for example:
- * <pre class="code">
- * configure(subprojects) {
- *     apply plugin: MergePlugin
- * }
- *
- * project("myproject") {
- * }
- *
- * project("myproject-extra") {
- *     merge.into = project("myproject")
- * }
- * </pre>
- * <p>
- * This plugin adds two new configurations:
- * <ul>
- * <li>merging - Contains the projects being merged into this project<li>
- * <li>runtimeMerge - Contains all dependencies that are merge projects. These are used
- * to allow an IDE to reference merge projects.</li>
- * <ul>
- *
- * @author Rob Winch
- * @author Phillip Webb
- */
-class MergePlugin implements Plugin<Project> {
-
-	private static boolean attachedProjectsEvaluated;
-
-	public void apply(Project project) {
-		project.plugins.apply(MavenPlugin)
-		project.plugins.apply(EclipsePlugin)
-		project.plugins.apply(IdeaPlugin)
-
-		MergeModel model = project.extensions.create("merge", MergeModel)
-		model.project = project
-		project.configurations.create("merging")
-		Configuration runtimeMerge = project.configurations.create("runtimeMerge")
-
-		// Ensure the IDE can reference merged projects
-		project.eclipse.classpath.plusConfigurations += [ runtimeMerge ]
-		project.idea.module.scopes.PROVIDED.plus += [ runtimeMerge ]
-
-		// Hook to perform the actual merge logic
-		project.afterEvaluate{
-			if (it.merge.into != null) {
-				setup(it)
-			}
-			setupIdeDependencies(it)
-		}
-
-		// Hook to build runtimeMerge dependencies
-		if (!attachedProjectsEvaluated) {
-			project.gradle.projectsEvaluated{
-				postProcessProjects(it)
-			}
-			attachedProjectsEvaluated  = true;
-		}
-	}
-
-	private void setup(Project project) {
-		project.merge.into.dependencies.add("merging", project)
-		project.dependencies.add("provided", project.merge.into.sourceSets.main.output)
-		project.dependencies.add("runtimeMerge", project.merge.into)
-		setupTaskDependencies(project)
-		setupMaven(project)
-	}
-
-	private void setupTaskDependencies(Project project) {
-		// invoking a task will invoke the task with the same name on 'into' project
-		["sourcesJar", "jar", "javadocJar", "javadoc", "install", "artifactoryPublish", "signArchives", "uploadArchives"].each {
-			def task = project.tasks.findByPath(it)
-			if (task) {
-				task.enabled = false
-				task.dependsOn(project.merge.into.tasks.findByPath(it))
-			}
-		}
-
-		// update 'into' project artifacts to contain the source artifact contents
-		project.merge.into.sourcesJar.from(project.sourcesJar.source)
-		project.merge.into.jar.from(project.sourceSets.main.output)
-		project.merge.into.javadoc {
-			source += project.javadoc.source
-			classpath += project.javadoc.classpath
-		}
-	}
-
-	private void setupIdeDependencies(Project project) {
-		project.configurations.each { c ->
-			c.dependencies.findAll( { it instanceof org.gradle.api.artifacts.ProjectDependency } ).each { d ->
-				if(d.dependencyProject.hasProperty("merge")) {
-					d.dependencyProject.merge.from.each { from ->
-						project.dependencies.add("runtimeMerge", from)
-					}
-				}
-			}
-		}
-	}
-
-	private void setupMaven(Project project) {
-		project.configurations.each { configuration ->
-			Conf2ScopeMapping mapping = project.conf2ScopeMappings.getMapping([configuration])
-			if (mapping.scope) {
-				Configuration intoConfiguration = project.merge.into.configurations.create(
-					project.name + "-" + configuration.name)
-				configuration.excludeRules.each {
-					configuration.exclude([
-						(ExcludeRule.GROUP_KEY) : it.group,
-						(ExcludeRule.MODULE_KEY) : it.module])
-				}
-				configuration.dependencies.each {
-					def intoCompile = project.merge.into.configurations.getByName("compile")
-					// Protect against changing a compile scope dependency (SPR-10218)
-					if (!intoCompile.dependencies.contains(it)) {
-						intoConfiguration.dependencies.add(it)
-					}
-				}
-				def index = project.parent.childProjects.findIndexOf {p -> p.getValue() == project}
-				project.merge.into.install.repositories.mavenInstaller.pom.scopeMappings.addMapping(
-					mapping.priority + 100 + index, intoConfiguration, mapping.scope)
-			}
-		}
-	}
-
-	private postProcessProjects(Gradle gradle) {
-		gradle.allprojects(new Action<Project>() {
-			public void execute(Project project) {
-				if(!project.hasProperty("merge")) {
-					return
-				}
-				project.configurations.getByName("runtime")?.allDependencies?.withType(ProjectDependency)?.each{
-					Configuration dependsOnMergedFrom = it.dependencyProject.configurations.getByName("merging");
-					dependsOnMergedFrom.dependencies.each{ dep ->
-						project.dependencies.add("runtimeMerge", dep.dependencyProject)
-					}
-				}
-			}
-		});
-	}
-}
-
-class MergeModel {
-	Project project;
-	Project into;
-	List<Project> from = [];
-
-	public void setInto(Project into) {
-		this.into = into;
-		into.merge.from.add(project);
-	}
-}

+ 0 - 1
buildSrc/src/main/groovy/io/spring/gradle/convention/SpringModulePlugin.groovy

@@ -34,7 +34,6 @@ class SpringModulePlugin extends AbstractSpringJavaPlugin {
 		pluginManager.apply("io.spring.convention.maven");
 		pluginManager.apply("io.spring.convention.artifactory");
 		pluginManager.apply("io.spring.convention.jacoco");
-		pluginManager.apply("io.spring.convention.merge");
 
 		def deployArtifacts = project.task("deployArtifacts")
 		deployArtifacts.group = 'Deploy tasks'

+ 0 - 1
buildSrc/src/main/resources/META-INF/gradle-plugins/io.spring.convention.merge.properties

@@ -1 +0,0 @@
-implementation-class=io.spring.gradle.convention.MergePlugin