mirror of
https://github.com/SpencerPark/IJava.git
synced 2025-04-14 10:26:08 +00:00
153 lines
5.1 KiB
Groovy
153 lines
5.1 KiB
Groovy
plugins {
|
|
id 'java'
|
|
id 'maven-publish'
|
|
id('com.github.hierynomus.license') version '0.14.0'
|
|
id('io.github.spencerpark.jupyter-kernel-installer') version '2.1.0'
|
|
id('com.github.jk1.dependency-license-report')
|
|
}
|
|
|
|
import org.apache.tools.ant.filters.ReplaceTokens
|
|
import com.github.jk1.license.render.*
|
|
import com.github.jk1.license.filter.*
|
|
import io.github.spencerpark.gradle.*
|
|
|
|
group = 'io.github.spencerpark'
|
|
version = '1.3.0'
|
|
|
|
wrapper {
|
|
gradleVersion = '4.8.1'
|
|
distributionType = Wrapper.DistributionType.ALL
|
|
}
|
|
|
|
// Add the license header to source files
|
|
license {
|
|
header = file('LICENSE')
|
|
exclude '**/*.json'
|
|
mapping {
|
|
// Use a regular multiline comment rather than a javadoc comment
|
|
java = 'SLASHSTAR_STYLE'
|
|
}
|
|
}
|
|
build.dependsOn 'licenseFormat'
|
|
|
|
// Configures the license report generated for the dependencies.
|
|
licenseReport {
|
|
excludeGroups = []
|
|
renderers = [
|
|
// Generate a pretty HTML report that groups dependencies by their license.
|
|
new NewInventoryHtmlReportRenderer('dependencies.html'),
|
|
// TODO make sure ci verifies that all licenses are know to be allowed to redistribute before publishing
|
|
new JsonReportRenderer('dependencies.json')
|
|
]
|
|
|
|
// Group same licenses despite names being slightly different (ex. Apache 2.0 vs Apache version 2)
|
|
filters = [new LicenseBundleNormalizer()]
|
|
|
|
configurations = ['compile']
|
|
}
|
|
|
|
compileJava {
|
|
sourceCompatibility = 1.9
|
|
targetCompatibility = 1.9
|
|
}
|
|
|
|
configurations {
|
|
shade
|
|
// transitive true to make sure that the dependencies of shade dependencies also get shaded
|
|
// into the jar
|
|
shade.transitive = true
|
|
compile.extendsFrom(shade)
|
|
}
|
|
|
|
repositories {
|
|
mavenCentral()
|
|
maven {
|
|
url = 'https://oss.sonatype.org/content/repositories/snapshots/'
|
|
}
|
|
mavenLocal()
|
|
}
|
|
|
|
dependencies {
|
|
shade group: 'io.github.spencerpark', name: 'jupyter-jvm-basekernel', version: '2.3.0'
|
|
|
|
shade group: 'org.apache.ivy', name: 'ivy', version: '2.5.0-rc1'
|
|
//shade group: 'org.apache.maven', name: 'maven-settings-builder', version: '3.6.0'
|
|
shade group: 'org.apache.maven', name: 'maven-model-builder', version: '3.6.0'
|
|
|
|
testCompile group: 'junit', name: 'junit', version: '4.12'
|
|
}
|
|
|
|
jar {
|
|
//Include all shaded dependencies in the jar
|
|
from configurations.shade
|
|
.collect { it.isDirectory() ? it : zipTree(it) }
|
|
|
|
manifest {
|
|
attributes('Main-class': 'io.github.spencerpark.ijava.IJava')
|
|
}
|
|
}
|
|
|
|
processResources {
|
|
def tokens = [
|
|
'version': project.version,
|
|
'project': project.name
|
|
]
|
|
inputs.properties(tokens)
|
|
filter ReplaceTokens, tokens: tokens
|
|
}
|
|
|
|
publishing {
|
|
publications {
|
|
mavenJava(MavenPublication) {
|
|
from components.java
|
|
}
|
|
}
|
|
}
|
|
|
|
jupyter {
|
|
kernelName = 'java'
|
|
kernelDisplayName = 'Java'
|
|
kernelLanguage = 'java'
|
|
kernelInterruptMode = 'message'
|
|
|
|
kernelParameters {
|
|
list('classpath', 'IJAVA_CLASSPATH') {
|
|
separator = PATH_SEPARATOR
|
|
description = '''A file path separator delimited list of classpath entries that should be available to the user code. **Important:** no matter what OS, this should use forward slash "/" as the file separator. Also each path may actually be a simple glob.'''
|
|
}
|
|
|
|
list('comp-opts', 'IJAVA_COMPILER_OPTS') {
|
|
separator = ' '
|
|
description = '''A space delimited list of command line options that would be passed to the `javac` command when compiling a project. For example `-parameters` to enable retaining parameter names for reflection.'''
|
|
}
|
|
|
|
list('startup-scripts-path', 'IJAVA_STARTUP_SCRIPTS_PATH') {
|
|
separator = PATH_SEPARATOR
|
|
description = '''A file path seperator delimited list of `.jshell` scripts to run on startup. This includes ijava-jshell-init.jshell and ijava-display-init.jshell. **Important:** no matter what OS, this should use forward slash "/" as the file separator. Also each path may actually be a simple glob.'''
|
|
}
|
|
|
|
string('startup-script', 'IJAVA_STARTUP_SCRIPT') {
|
|
description = '''A block of java code to run when the kernel starts up. This may be something like `import my.utils;` to setup some default imports or even `void sleep(long time) { try {Thread.sleep(time); } catch (InterruptedException e) { throw new RuntimeException(e); }}` to declare a default utility method to use in the notebook.'''
|
|
}
|
|
|
|
string('timeout', 'IJAVA_TIMEOUT') {
|
|
aliases NO_TIMEOUT: '-1'
|
|
description = '''A duration specifying a timeout (in milliseconds by default) for a _single top level statement_. If less than `1` then there is no timeout. If desired a time may be specified with a `TimeUnit` may be given following the duration number (ex `"30 SECONDS"`).'''
|
|
}
|
|
}
|
|
}
|
|
|
|
installKernel {
|
|
kernelInstallPath = commandLineSpecifiedPath(userInstallPath)
|
|
}
|
|
|
|
zipKernel {
|
|
installers {
|
|
with 'python'
|
|
}
|
|
|
|
from(generateLicenseReport.outputFolder) {
|
|
into 'dependency-licenses'
|
|
}
|
|
}
|
|
zipKernel.dependsOn 'generateLicenseReport' |