当前位置:   article > 正文

Spring源码(Gradle管理)转Maven项目_gradle的spring源码怎么到maven仓库

gradle的spring源码怎么到maven仓库

Spring源码(Gradle管理)转Maven项目

背景:项目源码是3.2.x,gradle4.10.2。最开始首先就是替换maven中央仓库为阿里云的中央仓库,其实执行安装的时候一定要用./gradlew install不要用原生的gradle install会有各种问题;最终版脚本地址

一、添加maven插件

首先在build.gradle脚本中添加maven插件

apply plugin: 'java'
apply plugin: 'maven'
apply plugin: 'eclipse'
group = 'org.springframework'
version = '3.2.100-SNAPSHOT'
  • 1
  • 2
  • 3
  • 4
  • 5

同时修改gradle.properties的版本号为上述一致就行;此时在根目录运行./gradlew install就会在各个模块下面build目录生成pom-default.xml,现在还不能直接使用,另外打包有点慢,浪费生命,注释掉一些不必要的任务,如下所示:

artifacts {
   
	//archives sourcesJar //打包源码
	//archives javadocJar //打包文档
}

artifacts {
   
	//archives docsZip    //所有文档打包压缩
	//archives schemaZip  //schema压缩
	//archives distZip    //dist
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

二、添加拷贝任务

前面讲到在build目录下生成pom-default.xml,但是因为不在模块根目录下,且名字不叫pom.xml所以不能使用,需要拷贝到根目录下面。可以通过在configure(subprojects - project(":spring-build-src")) { subproject ->下面新增copy任务,两种实现方案:

1、方案一
task copyPomXml(type: Copy, dependsOn: jar){
   
		def fileExist = file("${subproject.buildDir}/poms/pom-default.xml").exists()
		if (!fileExist) {
   
			println("file ${subproject.buildDir}/poms/pom-default.xml not exist!")
		}
		println("from ${subproject.buildDir}/poms/pom-default.xml to ${subproject.projectDir}/pom.xml")
		file("${subproject.buildDir}/poms/pom-default.xml").renameTo(file("${subproject.projectDir}/pom.xml"))
	}
install.dependsOn(copyPomXml)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
2、方案二
//必须等到jar生成以后才能执行拷贝,否则pom文件不存在
task copyPomXml2(type: Copy, dependsOn: jar){
   
		//from,to里面一定要使用双引号,否则变量解析不了,
		//而且也没有异常,使用debug模式会告诉你找不到源文件
		from("${subproject.buildDir}/poms")
		include '**/*.xml'
		into file("${subproject.projectDir}/")
		rename {
    filename ->
			filename.replace 'pom-default', 'pom'
		}
		//允许拷贝空目录
		includeEmptyDirs = true
	}
//在最终install任务之前执行,install之前会有各种编译打包任务
install.dependsOn(copyPomXml2) 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

至此完成了根目录下pom文件的生成,真是不容易啊,弄了好久,遇到各种莫名其妙的问题,主要是很多异常打的莫名其妙,相对于java等语言,来讲,定位问题的成本真的很高;可是很多事情并没有那么圆满,这样生成的pom缺失一堆依赖项;后面研究使用maven-publish插件参考;参考2

三、通过Gradle发布Jar到远程中央仓库

期间因多次尝试转Maven工程失败,想过Gradle能够直接使用maven中央仓库, 那是否也可以直接上传到maven仓库呢?通过检索有两种方式:maven-publishuploadArchives, 网上也是查了好多,都搞不定,真实醉了,官方文档也只是介绍了单一模块的情况,真的快绝望了,最后发现Gradle的GitHub源码中有示例multiple-publications,按照这个例子,只要在build.gradle最外层增加如下代码:

1、使用maven-publish插件,分开配置
第一步:配置发布的中央仓库地址/登入信息
subprojects {
   
	apply plugin: 'java'
	apply plugin: 'maven-publish'

	repositories {
   
		mavenCentral()
	}

	publishing {
   
		repositories {
   
			maven {
   
				url "填上maven中央仓库地址"
				credentials {
   
					userna
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/305819
推荐阅读
相关标签
  

闽ICP备14008679号