diff --git a/build.gradle b/build.gradle index f5ca296de21a4d3ed40594a8a2525e4d38a0de93..b391f186d0d59e998c7eb08432671efa99fc026a 100644 --- a/build.gradle +++ b/build.gradle @@ -1,8 +1,9 @@ apply plugin: 'asciidoctor' +apply plugin: 'eclipse' apply plugin: 'eclipse-wtp' apply plugin: 'java' apply plugin: 'jetty' -apply plugin: 'eclipse' +apply plugin: 'maven-publish' apply plugin: 'vagrant' apply plugin: 'war' apply plugin: 'wrapper' @@ -13,48 +14,64 @@ version = '1.1-SNAPSHOT' description = 'Isochrones' ext { - vagrantDirString = System.properties['user.home'] + '/vagrantboxes/isochrones' + defaultVersion = '0.3-SNAPSHOT' + isRelease = false + vagrantDirString = System.properties['user.home'] + '/vagrantboxes/' + project.name.toLowerCase() vagrantDir = file("$vagrantDirString") } +if (version.equalsIgnoreCase('unspecified')) { + version = defaultVersion +} else if (!version.matches(~/[0-9\.]*(-SNAPSHOT)?/)) { + println "Invalid version number '$version' given. Falling back to default!" + version = defaultVersion +} + +if (version.endsWith('-SNAPSHOT')) { + println "Building SNAPSHOT version $version" +} else { + isRelease = true; + println "Building RELEASE version $version" +} + repositories { - maven { url "http://maven.geo-solutions.it" } - maven { url "http://repo.maven.apache.org/maven2" } + mavenCentral() + maven { url "http://maven.geo-solutions.it" } } buildscript { apply from: 'http://www.krismer.de/files/checkstyle.gradle' - repositories { - jcenter() - maven { url 'http://dl.bintray.com/content/aalmiray/asciidoctor'} - } + repositories { + jcenter() + maven { url 'http://dl.bintray.com/content/aalmiray/asciidoctor'} + } - dependencies { - classpath 'org.gradle.api.plugins:gradle-vagrant-plugin:0.2' - classpath 'org.asciidoctor:asciidoctor-gradle-plugin:0.7.0' - } + dependencies { + classpath 'org.gradle.api.plugins:gradle-vagrant-plugin:0.2' + classpath 'org.asciidoctor:asciidoctor-gradle-plugin:0.7.0' + } } dependencies { - compile group: 'postgresql', name: 'postgresql', version:'9.1-901.jdbc4' - compile group: 'commons-dbutils', name: 'commons-dbutils', version:'1.2' - compile group: 'commons-httpclient', name: 'commons-httpclient', version:'3.1' - compile group: 'it.geosolutions', name: 'geoserver-manager', version:'1.5.1' - compile group: 'javax.servlet', name: 'servlet-api', version:'2.5' - compile group: 'org.cometd.java', name: 'bayeux-api', version:'2.4.3' - compile group: 'org.cometd.java', name: 'cometd-java-server', version:'2.4.3' - compile group: 'org.cometd.javascript', name: 'cometd-javascript-jquery', version:'2.4.3' - compile group: 'org.json', name: 'json', version:'20131018' - compile group: 'org.postgis', name: 'postgis-jdbc', version:'1.3.3' - - testCompile 'org.testng:testng:6+' + compile group: 'postgresql', name: 'postgresql', version:'9.1-901.jdbc4' + compile group: 'commons-dbutils', name: 'commons-dbutils', version:'1.2' + compile group: 'commons-httpclient', name: 'commons-httpclient', version:'3.1' + compile group: 'it.geosolutions', name: 'geoserver-manager', version:'1.5.1' + compile group: 'javax.servlet', name: 'servlet-api', version:'2.5' + compile group: 'org.cometd.java', name: 'bayeux-api', version:'2.4.3' + compile group: 'org.cometd.java', name: 'cometd-java-server', version:'2.4.3' + compile group: 'org.cometd.javascript', name: 'cometd-javascript-jquery', version:'2.4.3' + compile group: 'org.json', name: 'json', version:'20131018' + compile group: 'org.postgis', name: 'postgis-jdbc', version:'1.3.3' + + testCompile 'org.testng:testng:6+' } asciidoctor { backend = 'html5' sourceDir = file('doc') - outputDir = file("$buildDir/docs/asciidoctor") + outputDir = file("$buildDir/docs/asciidoctor") } checkstyle { @@ -79,14 +96,36 @@ eclipse { } wtp { - component { - contextPath = '/isochrones' - } + component { + contextPath = '/isochrones' + } - facet { - facet name: 'jst.web', version: '3.0' - facet name: 'jst.java', version: '1.7' - } + facet { + facet name: 'jst.web', version: '3.0' + facet name: 'jst.java', version: '1.7' + } + } +} + +publishing { + publications { + mavenJava(MavenPublication) { + from components.java + + artifact javadocJar + artifact sourcesJar + artifact staticJar + } + } + + repositories { + maven { + credentials { + username repositoryUsername + password repositoryPassword + } + url repositoryPrefix + "${isRelease ? 'releases' : 'snapshots'}" + } } } @@ -95,8 +134,32 @@ test { } vagrant { - boxDir = vagrantDir - provider = 'virtualbox' + boxDir = vagrantDir + provider = 'virtualbox' +} + +task javadocJar(type: Jar, dependsOn: javadoc) { + description = 'Builds a jar file including javadoc' + from javadoc.destinationDir + + classifier "javadoc" +} + +task sourcesJar(type: Jar, dependsOn: classes) { + description = 'Builds a jar file including sources' + from sourceSets.main.allSource + + classifier "sources" +} + +task staticJar(type: Jar) { + description = 'Builds a jar file including all libraries' + from sourceSets.main.output + from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } } + + manifest { attributes 'Main-Class': 'de.krismer.tnfp.TrackNumberFromPlaylist' } + + classifier "static" } task testSimple(type: Test, dependsOn: testClasses) { @@ -111,8 +174,8 @@ task vagrantPrepare << { if (!vagrantDir.isDirectory()) { println "Creating directory $vagrantDir" - vagrantDir.mkdirs() - } + vagrantDir.mkdirs() + } sync { from files('etc/vagrant') @@ -122,8 +185,13 @@ task vagrantPrepare << { vagrantDestroy.doFirst { if (!vagrantDir.isDirectory()) { - throw new StopExecutionException() - } + throw new StopExecutionException() + } } vagrantUp.dependsOn(vagrantPrepare) + +task jarAll(dependsOn: [jar, javadocJar, sourcesJar, staticJar]) + +task buildAll(dependsOn: [jarAll, build]) + diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 0000000000000000000000000000000000000000..08eadf9f3e2c39cd831325e358e0a251c41590b6 --- /dev/null +++ b/gradle.properties @@ -0,0 +1,3 @@ +repositoryPrefix=https://server.krismer.de/nexus/content/repositories/ +repositoryUsername=nexus +repositoryPassword=Nexus!190685