Gradle如何发布jar到本地maven库

Gradle

  •  gradle一款作用同似maven的项目管理工具,但是他没有自己的仓库,gradle是怎么使用jar的呢!
  1. gradel使用jar的仓库分为三部分:远程库,本地maven库,gradle缓存库
  2. 创建项目的时候会根据gradle.build的配置去一次读取项目所需要的jar,不管是从远程库还是本地的maven库,然后都存储在gradle的缓存库中。
  3. 问题在于如何使用自己发布的jar呢,由于gradle没有本地库,故而打包jar或者war都是需要发布到远程仓库和本地maven库的
  4. 利用插件发布项目到本地库或远程库  

利用gradle插件发布jar到本地maven或远程库

  •  在build.gradle中导入插件
apply plugin: 'maven-publish'
  •  然后配置插件
//利用publishing启动项目打包
publishing {
    //发布内容
    publications {
        //自命名"myPublish"为一个发布任务
        myPublish(MavenPublication) {
            //jar来源
            from components.java
        }
    }
    //配置仓库信息
    repositories {
       maven {
        //库名称
        name "myRepo"
        url "远程库的url/"
        }
    }

}

实际项目中的使用范例

group 'com.******.******'
version '0.0.1-SNAPSHOT'

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'maven-publish'

archivesBaseName="项目名"

sourceCompatibility = 1.8
[compileJava, compileTestJava]*.options*.encoding = 'UTF-8'

ext {
    baseProjectName = "rechargeplat-api"
    publishUserName = "admin"
    publishUserPassword = "*****"
    publishURL = "公司私库url"
}

repositories {
    maven { url "远程库的URL" }
}

dependencies {
    compile 'com.alibaba:fastjson:1.2.7'
}

publish.dependsOn build


sourceSets {
	main {
		java {
			srcDir 'src/main/java'
		}
		resources {
			srcDir 'src/main/resources'
		}
	}
}


publishing {
    publications {
        publishing.publications.create("${baseProjectName}", MavenPublication) {
            groupId group
            artifactId baseProjectName
            version version
            artifact jar
            pom.withXml {
                asNode().children().last() + {
                    delegate.dependencies {
                        delegate.dependency {
                            delegate.groupId("net.sf.json-lib")
                            delegate.artifactId("json-lib")
                            delegate.version("2.4")
                            delegate.classifier("jdk15")
                        }
                    }
                }
            }
        }
    }
    repositories {
        maven {
            url publishURL
            credentials {
                username = publishUserName
                password = publishUserPassword
            }
        }
    }
}




直接利用gradle运行插件就完成了

 Gradle如何发布jar到本地maven库

publish是发布jar到远程maven的(如果是多个项目会全部发布) 

publishToMavenLocal是发布jar到本地的 (同上)