springboot采用gradle后源码的编译针对Maven做了哪些兼容处理

springboot源码针对做了一些默认处理,分别是对项目应用发布能力、添加仓库支持能力、默认创建Maven格式发布声明。
通过这些默认处理,如果触发了Jar打包任务,则对项目的组件执行Maven发布操作,这些底层的操作是由实现的,包括对Jar任务的定义,对相关文件的定义。
默认支持三种类型:类的jar包、web类的war包和平台级组件。的世界观就是面向开发环境定义世界并驱动世界。这样下去,将出现具有”自省”能力的编译系统。

/**
 * A plugin applied to a project that should be deployed.
 * 项目部署插件
 * @author Andy Wilkinson
 */
public class DeployedPlugin implements Plugin {

	/**
	 * Name of the task that generates the deployed pom file.
	 * 生成pom部署文件的任务名。
	 */
	public static final String GENERATE_POM_TASK_NAME = "generatePomFileForMavenPublication";

	@Override
	public void apply(Project project) {
		// 添加以maven格式发布到maven仓库的能力
		project.getPlugins().apply(MavenPublishPlugin.class);
		// 添加兼容maven仓库的能力,使该项目的发布对基于maven仓库配置的项目有效
		project.getPlugins().apply(MavenRepositoryPlugin.class);
		// 打开一个项目发布配置扩展工具,用来定义项目如何发布的配置
		PublishingExtension publishing = project.getExtensions().getByType(PublishingExtension.class);
		// 创建maven格式的发布声明
		MavenPublication mavenPublication = publishing.getPublications().create("maven", MavenPublication.class);
		project.afterEvaluate((evaluated) -> {// 如果打包任务(JAR)激活,就逐个发布jar包到设置的Maven仓库
			project.getPlugins().withType(JavaPlugin.class).all((javaPlugin) -> {
				if (((Jar) project.getTasks().getByName(JavaPlugin.JAR_TASK_NAME)).isEnabled()) {
					project.getComponents().matching((component) -> component.getName().equals(""))
							.all((javaComponent) -> mavenPublication.from(javaComponent));
				}
			});
		});
		// java平台插件处理
		project.getPlugins().withType(JavaPlatformPlugin.class)
				.all((javaPlugin) -> project.getComponents()
						.matching((component) -> component.getName().equals("javaPlatform"))
						.all((javaComponent) -> mavenPublication.from(javaComponent)));
	}
}

声明: 除非转自他站(如有侵权,请联系处理)外,本文采用 BY-NC-SA 协议进行授权 | 智乐兔
转载请注明:转自《springboot采用gradle后源码的编译针对Maven做了哪些兼容处理
本文地址:https://www.zhiletu.com/archives-10639.html
关注公众号:智乐兔

赞赏

wechat pay微信赞赏alipay pay支付宝赞赏

上一篇
下一篇

相关文章

在线留言

你必须 登录后 才能留言!

在线客服
在线客服 X

售前: 点击这里给我发消息
售后: 点击这里给我发消息

智乐兔官微