// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements.  See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership.  The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License.  You may obtain a copy of the License at
//
//   http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied.  See the License for the
// specific language governing permissions and limitations
// under the License.

// This file contains common tasks and configuration for artifact generation.

// Create a configuration so that the test jar can be referenced in other modules.
configurations.create("test")

task testJar(type: Jar, dependsOn: testClasses, group: "Build") {
  description = "Assembles a jar archive containing the test classes."
  from sourceSets.test.output
  archiveClassifier = "tests"
  archiveExtension = "jar"
}

task sourcesJar(type: Jar, dependsOn: classes, group: "Build") {
  description = "Assembles a jar archive containing the main source."
  from sourceSets.main.allSource
  archiveClassifier = "sources"
  archiveExtension = "jar"
}

task testSourcesJar(type: Jar, dependsOn: testJar, group: "Build") {
  description = "Assembles a jar archive containing the test source."
  from sourceSets.test.allSource
  archiveClassifier = "test-sources"
  archiveExtension = "jar"
}

task javadocJar(type: Jar, dependsOn: javadoc, group: "Build") {
  description = "Assembles a jar archive containing the javadoc."
  from javadoc.destinationDir
  archiveClassifier = "javadoc"
  archiveExtension = "jar"
}

tasks.withType(Jar) {
  // Configure the manifest content of the Jars.
  manifest {
    attributes "Implementation-Title": "$project.archivesBaseName"
    attributes "Implementation-Version": "$project.version"
  }
  from ("$rootDir/../NOTICE.txt") {
    into "META-INF"
  }
  from ("$rootDir/../LICENSE.txt") {
    into "META-INF"
  }
  // Prevent empty directories in the Jars.
  includeEmptyDirs = false
}

artifacts {
  test testJar
  archives testJar
  archives sourcesJar
  archives testSourcesJar
  archives javadocJar
}