apply plugin: 'java' apply plugin: 'maven-publish' def classesDir='build/classes/main' tasks.withType(JavaCompile){ options.encoding = 'UTF-8' destinationDir = file(classesDir) } configurations.all { resolutionStrategy.cacheChangingModulesFor 0, 'seconds' } //源码版本 sourceCompatibility=1.8 //构建的class版本 targetCompatibility=1.8 //解压lib下的jar到classes文件夹 jar{ baseName="fine-third" zip64 true } repositories { mavenCentral() maven { url "http://mvn.finedevelop.com/repository/maven-public/" } maven { url "http://mvn.finedevelop.com/repository/fanruan/" } } sourceSets{ main{ java{ srcDirs=[] } } } //获取什么分支名 FileTree files =fileTree(dir:'./',include:'build*.gradle') def buildDir=files[0].path.substring(0,files[0].path.lastIndexOf (java.io.File.separator)) def branchName=buildDir.substring(buildDir.lastIndexOf (java.io.File.separator)+1) def date = new Date() def formattedDate = date.format('yyyy.MM.dd') def srcDir="." def maven_version_build = "" def indexV = branchName.indexOf( "%2F"); // "FEATURE", "RELEASE"等等 String branchNameUpperCase = "RELEASE" if(indexV != -1){ version= branchName.substring(indexV+3, branchName.length()).toUpperCase() branchNameUpperCase = branchName.substring(0, indexV).toUpperCase() maven_version_build = project.version +"-" + branchNameUpperCase +"-SNAPSHOT" } else { version= branchName maven_version_build = project.version +"-SNAPSHOT" } def maven_version="${version}.${formattedDate}" def jar_version = version configurations { // thirdjar // sigar essential } // 主体代码与essential的对应关系配置在TeamCity String essentialVersion = findProperty("essentialVersion") String cbbVersion = findProperty("cbbVersion") //指定依赖 dependencies{ essential "com.fr.essential:fine-essential:${essentialVersion}" essential "com.fr.cbb:fine-scheduler:${cbbVersion}" essential "com.fr.cbb:fine-function:${cbbVersion}" essential "com.fr.cbb:fine-jooq:${cbbVersion}" essential "com.fr.cbb:fine-sql:${cbbVersion}" // thirdjar "com.fr.third:fine-third-base:10.0-BASE-SNAPSHOT" // sigar "com.fr.third:sigar:1.6.0" testCompile 'junit:junit:4.12' } publishing { publications { third(MavenPublication) { groupId "com.fr.third" artifactId "fine-third" version maven_version ext.repo = 'release' from components.java } third_build(MavenPublication) { groupId "com.fr.third" artifactId project.hasProperty("withCBB") ? "fine-third" : "fine-third-without-cbb" version maven_version_build ext.repo = 'snapshot' from components.java } } repositories { maven { name "release" url "http://mvn.finedevelop.com/repository/fanruan-release/" credentials { username = findProperty("NEXUS_USERNAME") password = findProperty("NEXUS_PASSWORD") } } maven { name "snapshot" url "http://mvn.finedevelop.com/repository/fanruan/" credentials { username = findProperty("NEXUS_USERNAME") password = findProperty("NEXUS_PASSWORD") } } } } afterEvaluate { tasks.withType(PublishToMavenRepository) { task -> if (task.publication.hasProperty('repo') && task.publication.repo != task.repository.name) { task.enabled = false task.group = null } } } task unpack(type:Copy) { delete classesDir destinationDir=file(classesDir) // println(configurations.thirdjar.singleFile) // from { // zipTree(configurations.thirdjar.singleFile) // } // from { // zipTree(configurations.sigar.singleFile) // } // from { // zipTree("fine-quartz/lib/c3p0-0.9.1.1.jar") // } from { zipTree("fine-spring/lib/aopalliance-1.0.jar") } from { zipTree("fine-poi/lib/curvesapi-1.03.jar") } from { zipTree("fine-freehep/lib/fine-font-10.0.jar") } fileTree(dir:"build/libs",include:"**/*.jar").each { File file -> from { zipTree(file) } } } // 将essential依赖等级的jar全部解压到classes下 task unpackEssential(type:Copy) { if (project.hasProperty("withCBB")) { for (File file : configurations.essential.files) { from (zipTree(file)) { exclude "META-INF/versions/11/*" exclude "META-INF/maven/com.zaxxer/**" } } into classesDir } } unpackEssential.dependsOn unpack jar.dependsOn unpackEssential