task wrapper(type: Wrapper) {
  gradleVersion = '2.3'
}

buildscript {
  repositories {
    jcenter()
  }
  dependencies {
    classpath 'com.github.jengelman.gradle.plugins:shadow:1.2.1'
  }
}

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'idea'
apply plugin: 'com.github.johnrengelman.shadow'

sourceCompatibility = 1.7
targetCompatibility = 1.7

group = 'com.googlesource.gerrit.plugins.rabbitmq'
version = '3.14-SNAPSHOT'

jar {
  manifest {
    attributes(
      'Gerrit-PluginName': project.name,
      'Gerrit-ApiType': apiType,
      'Gerrit-ApiVersion': apiVersion,
      'Gerrit-Module': 'com.googlesource.gerrit.plugins.rabbitmq.Module',
      'Implementation-Vendor': 'rinrinne',
      'Implementation-URL': 'https://github.com/rinrinne/gerrit-rabbitmq-plugin',
      'Implementation-Title': "${apiType} ${project.name}",
      'Implementation-Version' : version,
      'Created-By': 'rinrinne (rinrin.ne@gmail.com)'
    )
  }
}

shadowJar {
  classifier = apiVersion
  mergeServiceFiles {
    exclude 'META-INF/*.DSA'
    exclude 'META-INF/*.RSA'
  }
  dependencies {
    include(dependency('com.rabbitmq:amqp-client'))
    include(dependency('com.google.inject.extensions:guice-multibindings'))
  }
}

repositories {
  mavenLocal()
  mavenCentral()
  maven {
    name = "Gerrit API repository"
    url = "https://gerrit-api.storage.googleapis.com/"
    artifactUrls = [
      "https://gerrit-api.storage.googleapis.com/release/",
      "https://gerrit-api.storage.googleapis.com/snapshot/",
    ]
  }
}

dependencies {
  compile(
    [group: 'com.google.gerrit', name: "gerrit-${apiType}-api", version: apiVersion],
    [group: 'com.google.inject.extensions', name: 'guice-multibindings', version: '4.0-beta5'],
    [group: 'com.google.code.gson', name: 'gson', version: '2.1'],
    [group: 'commons-lang', name: 'commons-lang', version: '2.5'],
    [group: 'commons-codec', name: 'commons-codec', version: '1.4'],
    [group: 'commons-io', name: 'commons-io', version: '1.4'],
    [group: 'com.rabbitmq', name: 'amqp-client', version: '3.5.0'],
  )
}

assemble.dependsOn shadowJar
