plugins {
id 'application'
}
def defaultMainClassName = "Main"
application {
mainClass = project.hasProperty("mainClass") ? project.getProperty("mainClass") : defaultMainClassName;
}
compileJava {
sourceCompatibility = "1.8";
targetCompatibility = "1.8";
}
repositories {
mavenCentral()
// since the Jasper devs keep using their own custom builds of ancient
// versions of other projects we need to add a repository for their
// "special" versions.
maven {
url 'https://jaspersoft.jfrog.io/jaspersoft/third-party-ce-artifacts/'
}
}
dependencies {
implementation group: 'com.h2database', name: 'h2', version: '1.4.200'
implementation group: 'net.sourceforge.dynamicreports', name: 'dynamicreports-core', version: '6.12.1'
implementation group: 'org.simplejavamail', name: 'simple-java-mail', version: '8.1.0'
implementation group: 'com.formdev', name: 'flatlaf', version: '3.1.1'
implementation group: 'javax.xml.bind', name: 'jaxb-api', version: '2.3.1'
implementation group: 'org.slf4j', name: 'slf4j-api', version: '2.0.7'
implementation group: 'ch.qos.logback', name: 'logback-classic', version: '1.4.7'
}
project.configurations.implementation.setCanBeResolved(true)
jar {
manifest {
attributes (
'Main-Class': 'Main',
'Class-Path': configurations.implementation.collect { 'lib/' + it.name }.join(' ')
)
}
}
/* convenience tasks for working with a project */
tasks.register("copyDependencies", Copy) {
group = "Project";
description = "Copy all dependencies into a 'libs' folder in the root of the project.";
from configurations.implementation
into 'libs/'
}
tasks.register("createMissingSourceDirs") {
group = "Project";
description = "Create all of the missing source directories for this project.";
doFirst {
sourceSets.each { def sourceRoot ->
sourceRoot.allSource.srcDirTrees.each { def sourceDir ->
if(!sourceDir.dir.exists()) {
println "Creating ${sourceDir}";
mkdir sourceDir.dir;
}
}
}
}
}
tasks.register("deleteEmptySourceDirs") {
group = "Project";
description = "Delete empty source directories.";
doFirst {
sourceSets.each { def sourceRoot ->
sourceRoot.allSource.srcDirTrees.each { def sourceDir ->
if(sourceDir.dir.exists() && sourceDir.dir.isDirectory() && sourceDir.dir.list().length == 0) {
println "Removing empty ${sourceDir}";
sourceDir.dir.delete();
}
}
}
}
}
tasks.register("openProjectDir") {
group = "Project";
description = "Open the project directory in the system file manager.";
doFirst {
println("Opening: " + file(projectDir));
java.awt.Desktop.getDesktop().open(file(projectDir));
}
}
tasks.register("openBuildDir") {
group = "Project";
description = "Open the project build directory in the system file manager.";
doFirst {
println("Opening: " + file(buildDir));
java.awt.Desktop.getDesktop().open(file(buildDir));
}
}
tasks.register("createGitIgnore") {
group = "Project";
description = "Create the project's .gitignore file.";
def gitIgnored="""
.gradle/
.nb-gradle/
.settings/
nbproject/
build/
bin/
dist/
tmp/
.classpath
.project
*.zip
*.tgz
*.tar.gz
*.class
*.jar
.DS_Store
!gradle-wrapper.jar
""";
doLast {
def file = new File(projectDir, ".gitignore");
if ( !file.exists() ) {
println("Creating .gitignore");
gitIgnored.lines().each { f ->
if(!f.trim().isBlank()) {
file.append(f.trim()+"\n");
}
}
} else {
println(".gitignore already exists");
}
}
}