智慧·快乐·成长——科技造福于人。

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

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

/**
 * 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)));
	}
}

转载请注明:转自《springboot采用gradle后源码的编译针对Maven做了哪些兼容处理
本文地址:https://www..com/archives-10639.html

赞赏

微信赞赏支付宝赞赏

上一篇
下一篇

相关文章

在线留言

你必须 登录后 才能留言!