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("java")) .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做了哪些兼容处理》
本文地址:http://www.xiupu.net/archives-10639.html
关注公众号:
微信赞赏
支付宝赞赏