CrossCompile/build.gradle

160 lines
4.6 KiB
Groovy
Raw Normal View History

2018-07-17 21:13:43 +02:00
/*
* Copyright 2018 dorkbox, llc
*
* Licensed 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.
*/
import java.nio.file.Paths
2018-07-22 16:23:55 +02:00
import java.time.Instant
2018-07-17 21:13:43 +02:00
buildscript {
// load properties from custom location
def propsFile = Paths.get("${projectDir}/../../gradle.properties").toAbsolutePath().normalize().toFile()
println("Loading custom property data from: ${propsFile}")
def props = new Properties()
propsFile.withInputStream {props.load(it)}
props.each {key, val -> project.ext.set(key, val)}
2018-07-17 21:13:43 +02:00
repositories {
maven { url "https://plugins.gradle.org/m2/" }
2018-07-17 21:13:43 +02:00
}
dependencies {
2018-08-09 23:26:42 +02:00
// for plugin publishing
2018-07-17 21:13:43 +02:00
classpath "com.gradle.publish:plugin-publish-plugin:0.9.10"
2018-08-09 23:26:42 +02:00
// for license sources
classpath "gradle.plugin.com.dorkbox:Licensing:1.2.2"
classpath "gradle.plugin.com.dorkbox:Licensing:1.2.2:sources"
2018-07-17 21:13:43 +02:00
}
}
plugins {
id 'java'
id 'java-gradle-plugin'
id "org.jetbrains.kotlin.jvm" version "1.2.60"
2018-07-17 21:13:43 +02:00
id 'de.undercouch.download' version '3.4.3'
}
// for publishing the plugin to gradle
apply plugin: "com.gradle.plugin-publish"
// this is the only way to also get the source code for IDE auto-complete
apply plugin: "com.dorkbox.Licensing"
2018-07-17 21:13:43 +02:00
2018-07-17 21:38:22 +02:00
project.description = 'Plugin to auto-configure cross-compilation builds for java projects'
2018-07-17 21:13:43 +02:00
project.group = 'com.dorkbox'
project.version = '1.0.1'
2018-07-17 21:13:43 +02:00
project.ext.name = 'Gradle CrossCompile Plugin'
project.ext.id = 'CrossCompile'
project.ext.url = 'https://git.dorkbox.com/dorkbox/CrossCompile'
project.ext.tags = ['crosscompile', 'compile', 'java', 'kotlin', 'groovy']
licensing {
license(License.APACHE_2) {
author 'dorkbox, llc'
url 'https://git.dorkbox.com/dorkbox/CrossCompile'
2018-07-17 21:38:22 +02:00
note 'Plugin to auto-configure cross-compilation builds for java projects'
2018-07-17 21:13:43 +02:00
}
license('OpenJDK', License.GPLv2_CLASSPATH) {
copyright 1995
copyright 2006
author 'Oracle and/or its affiliates'
url 'https://github.com/dorkbox/JavaBuilder/tree/master/jdkRuntimes'
url 'http://jdk.java.net/'
url 'https://github.com/alexkasko/openjdk-unofficial-builds'
note 'Compressed OpenJDK runtimes for cross-target class compilation'
note ' http://hg.openjdk.java.net/jdk6/jdk6/jdk/file/79b17290a53c/THIRD_PARTY_README'
note ' http://hg.openjdk.java.net/jdk7/jdk7/jdk/file/9b8c96f96a0f/THIRD_PARTY_README'
note ' http://hg.openjdk.java.net/jdk8/jdk8/jdk/file/687fd7c7986d/THIRD_PARTY_README'
}
}
sourceSets {
main {
java {
setSrcDirs Collections.singletonList('src')
}
resources {
setSrcDirs Collections.singletonList('jdkRuntimes')
exclude '**/*.jar'
}
}
}
repositories {
jcenter()
}
dependencies {
compileOnly 'org.jetbrains.kotlin:kotlin-gradle-plugin:1.2.60'
2018-07-17 21:13:43 +02:00
implementation 'de.undercouch:gradle-download-task:latest.release'
implementation group: 'org.apache.commons', name: 'commons-compress', version: '1.17'
implementation group: 'org.tukaani', name: 'xz', version: '1.8'
implementation group: 'org.slf4j', name: 'slf4j-api', version: '1.7.25'
runtime group: 'ch.qos.logback', name: 'logback-classic', version: '1.1.6'
}
tasks.withType(JavaCompile) {
options.encoding = 'UTF-8'
options.incremental = true
}
2018-07-22 16:23:55 +02:00
tasks.withType(Jar) {
duplicatesStrategy DuplicatesStrategy.FAIL
manifest {
attributes['Implementation-Version'] = project.version
attributes['Build-Date'] = Instant.now().toString()
}
}
2018-07-17 21:13:43 +02:00
///////////////////////////////
////// Plugin Publishing + Release
///////////////////////////////
gradlePlugin {
plugins {
CrossCompile {
2018-08-13 14:56:18 +02:00
id = "${project.group}.${project.ext.id}"
2018-07-17 21:13:43 +02:00
implementationClass = 'dorkbox.crossCompile.PrepareJdk'
}
}
}
pluginBundle {
2018-07-17 21:38:22 +02:00
website = project.ext.url
2018-07-17 21:13:43 +02:00
vcsUrl = project.ext.url
plugins {
licensing {
id = "${project.group}.${project.ext.id}"
displayName = project.ext.name
description = project.description
tags = project.ext.tags
version = project.version
}
}
}