Gradle
- gradle一款作用同似maven的项目管理工具,但是他没有自己的仓库,gradle是怎么使用jar的呢!
- gradel使用jar的仓库分为三部分:远程库,本地maven库,gradle缓存库
- 创建项目的时候会根据gradle.build的配置去一次读取项目所需要的jar,不管是从远程库还是本地的maven库,然后都存储在gradle的缓存库中。
- 问题在于如何使用自己发布的jar呢,由于gradle没有本地库,故而打包jar或者war都是需要发布到远程仓库和本地maven库的
- 利用插件发布项目到本地库或远程库
利用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运行插件就完成了
publish是发布jar到远程maven的(如果是多个项目会全部发布)
publishToMavenLocal是发布jar到本地的 (同上)