import java.text.SimpleDateFormat defaultTasks "clean", "release" apply plugin: 'base' archivesBaseName = 'elasticsearch' buildTime = new Date() SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"); sdf.setTimeZone(TimeZone.getTimeZone("UTC")); buildTimeStr = sdf.format(buildTime) versionNumber = '0.18.0-SNAPSHOT' explodedDistDir = new File(distsDir, 'exploded') explodedDistLibDir = new File(explodedDistDir, 'lib') explodedDistBinDir = new File(explodedDistDir, 'bin') explodedDistConfigDir = new File(explodedDistDir, 'config') mavenRepoUrl = System.getenv("REPO_URL"); if (mavenRepoUrl == null) { // mavenRepoUrl = "file://localhost/" + projectDir.absolutePath + "/build/maven/repository" mavenRepoUrl = "http://oss.sonatype.org/service/local/staging/deploy/maven2/" } mavenSnapshotRepoUrl = System.getenv("SNAPSHOT_REPO_URL"); if (mavenSnapshotRepoUrl == null) { // mavenSnapshotRepoUrl = "file://localhost/" + projectDir.absolutePath + "/build/maven/snapshotRepository" mavenSnapshotRepoUrl = "http://oss.sonatype.org/content/repositories/snapshots" } mavenRepoUser = System.getenv("REPO_USER") mavenRepoPass = System.getenv("REPO_PASS") jarjarArchivePath = project(":jarjar").file("build/libs/jarjar-$versionNumber" + ".jar").absolutePath allprojects { group = 'org.elasticsearch' version = versionNumber plugins.withType(JavaPlugin).whenPluginAdded { sourceCompatibility = 1.6 targetCompatibility = 1.6 compileJava { sourceCompatibility = 1.6 targetCompatibility = 1.6 options.encoding = "UTF8" } javadoc { maxMemory = "1g" options.encoding = "UTF8" } test { useTestNG() String testSuiteName = project.name suiteName = project.name workingDir = rootProject.projectDir options { suiteNamte = testSuiteName listeners << 'org.elasticsearch.util.testng.Listeners' } maxHeapSize = '1g' systemProperties["es.logger.prefix"] = "" systemProperties["es.test.log.conf"] = System.getProperty("es.test.log.conf", "log4j-gradle.properties") systemProperties["es.test.log.conf"] = System.getProperty("es.test.log.conf", "log4j-gradle.properties") } dependencies { if (project.name != "test-testng") { testCompile project(':test-testng') } testCompile('org.testng:testng:6.1.1') { transitive = false } testCompile('com.beust:jcommander:1.5') { transitive = false } testCompile('org.beanshell:bsh:2.0b4') { transitive = false } testCompile('org.hamcrest:hamcrest-core:1.3.RC2') { transitive = false } testCompile('org.hamcrest:hamcrest-library:1.3.RC2') { transitive = false } } } repositories { mavenCentral() mavenRepo urls: 'https://repository.jboss.org/nexus/content/groups/public' mavenRepo urls: 'http://repository.codehaus.org/' mavenRepo urls: 'http://elasticsearch.googlecode.com/svn/maven' mavenRepo urls: 'http://oss.sonatype.org/content/repositories/releases' mavenRepo urls: 'http://oss.sonatype.org/content/repositories/snapshots' mavenRepo urls: 'http://download.java.net/maven/2/' } } configurations { dists distLib { visible = false } jdeb } dependencies { jdeb group: 'org.vafer', name: 'jdeb', version: '0.8' } //task run(dependsOn: [configurations.distLib], description: 'Runs') << { // ant.java(classname: "org.elasticsearch.bootstrap.Bootstrap", fork: "true", classpath: configurations.distLib.asPath, // jvmargs: "-Des-foreground=yes") //} dependencies { distLib project(':elasticsearch') } task explodedDist(dependsOn: [configurations.distLib], description: 'Builds a minimal distribution image') << { ant.delete(dir: explodedDistDir) // clean the exploded dir [explodedDistDir, explodedDistLibDir, explodedDistBinDir, explodedDistConfigDir]*.mkdirs() // remove old elasticsearch files ant.delete { fileset(dir: explodedDistLibDir, includes: "$archivesBaseName-*.jar") } copy { from configurations.distLib into explodedDistLibDir } copy { from('bin'); into explodedDistBinDir } copy { from('config'); into explodedDistConfigDir } copy { from('lib'); into explodedDistLibDir } copy { from('.') into explodedDistDir include 'LICENSE.txt' include 'NOTICE.txt' include 'README.textile' } ant.replace(dir: explodedDistBinDir, token: "@ES_VERSION@", value: versionNumber) ant.delete { fileset(dir: explodedDistLibDir, includes: "$archivesBaseName-*-javadoc.jar") } ant.delete { fileset(dir: explodedDistLibDir, includes: "$archivesBaseName-*-sources.jar") } ant.delete { fileset(dir: explodedDistLibDir, includes: "slf4j-*.jar") } // no need for slf4j ant.delete { fileset(dir: explodedDistLibDir, includes: "jarjar-*.jar") } // no need jackson, we jarjar it ant.delete { fileset(dir: explodedDistLibDir, includes: "sigar-*.jar") } // no need sigar directly under lib... // move relevant jars to ext // ant.move(todir: "$explodedDistLibDir/ext") { // fileset(dir: explodedDistLibDir) { // include(name: '*jline*') // include(name: '*log4j*') // include(name: '*jna*') // } // } ant.chmod(dir: "$explodedDistDir/bin", perm: "ugo+rx", includes: "**/*") } task zip(type: Zip, dependsOn: ['explodedDist']) { rootFolder = "$archivesBaseName-${-> version}" from(explodedDistDir) { into rootFolder exclude 'bin/elasticsearch' exclude 'bin/plugin' } from(explodedDistDir) { into rootFolder include 'bin/elasticsearch' include 'bin/plugin' fileMode = 0755 } } task tar(type: Tar, dependsOn: ['explodedDist']) { compression = Compression.GZIP extension = "tar.gz" rootFolder = "$archivesBaseName-${-> version}" from(explodedDistDir) { into rootFolder exclude 'bin/*.bat' exclude 'bin/elasticsearch' exclude 'bin/plugin' exclude 'lib/sigar/*win*' } from(explodedDistDir) { into rootFolder include 'bin/elasticsearch' include 'bin/plugin' fileMode = 0755 } } task deb(dependsOn: ['explodedDist']) << { ant.taskdef(name: "deb", classname: "org.vafer.jdeb.ant.DebAntTask", classpath: configurations.jdeb.asPath ) ant.copy(todir: "${distsDir}/debian") { fileset(dir: "pkg/debian/control") filterset(begintoken: "[[", endtoken: "]]"){ filter(token: "version", value: "${version}") } } ant.deb(destfile: "${distsDir}/${archivesBaseName}-${version}-1_all.deb", control: "${distsDir}/debian", verbose: "true"){ tarfileset(dir: explodedDistDir, prefix: "/usr/share/elasticsearch", includes: "*.txt, *.textile", username: "root", group: "root") tarfileset(dir: explodedDistBinDir, prefix: "/usr/share/elasticsearch/bin", excludes: "*.bat", filemode: "755", username: "root", group: "root") tarfileset(dir: explodedDistLibDir, prefix: "/usr/share/elasticsearch/lib", includes: "*.jar, sigar/*", username: "root", group: "root") tarfileset(dir: explodedDistConfigDir, prefix: "/etc/elasticsearch", username: "root", group: "root") tarfileset(dir: "pkg/debian/init.d", includes: "elasticsearch", prefix: "/etc/init.d", filemode: "755", username: "root", group: "root") tarfileset(dir: "pkg/debian/default", includes: "elasticsearch", prefix: "/etc/default", username: "root", group: "root") } ant.delete(dir: "${distsDir}/debian") } task release(dependsOn: [zip, tar, deb]) << { ant.delete(dir: explodedDistDir) } task wrapper(type: Wrapper) { gradleVersion = '1.0-milestone-3' }