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.1'

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
