From 62fe418522ab87397de63f1747fb1a345cfe092a Mon Sep 17 00:00:00 2001 From: "Erik C. Thauvin" Date: Thu, 7 Jul 2016 23:39:18 -0700 Subject: [PATCH] Reworked default velocity template. Improved example kobalt build. --- .gitignore | 1 + .idea/modules/example.iml | 4 +- .idea/modules/semver.iml | 14 +- .kobalt/versionCheckTimestamp.txt | 1 - README.html | 14 +- README.md | 14 +- build.gradle | 270 +++++++++--------- example/.idea/modules/example.iml | 24 -- example/build.gradle | 90 +++--- example/example.iml | 56 ++++ example/example.ipr | 18 +- example/kobalt/src/Build.kt | 2 +- .../kobalt/wrapper/kobalt-wrapper.properties | 2 +- .../erik/semver/example/GeneratedVersion.java | 60 ++-- .../thauvin/erik/semver/example/Example.java | 16 +- semver.ipr | 9 +- src/main/resources/version.vm | 60 ++-- version.properties | 2 +- 18 files changed, 389 insertions(+), 268 deletions(-) delete mode 100644 .kobalt/versionCheckTimestamp.txt delete mode 100644 example/.idea/modules/example.iml create mode 100644 example/example.iml diff --git a/.gitignore b/.gitignore index cb14895..9eb88be 100644 --- a/.gitignore +++ b/.gitignore @@ -7,6 +7,7 @@ .DS_Store .classpath .gradle +.kobalt .nb-gradle .project .settings diff --git a/.idea/modules/example.iml b/.idea/modules/example.iml index eeab07b..87a4c89 100644 --- a/.idea/modules/example.iml +++ b/.idea/modules/example.iml @@ -16,9 +16,9 @@ - - + + \ No newline at end of file diff --git a/.idea/modules/semver.iml b/.idea/modules/semver.iml index 600c897..1615fa6 100644 --- a/.idea/modules/semver.iml +++ b/.idea/modules/semver.iml @@ -1,5 +1,5 @@ - + @@ -15,12 +15,12 @@ - - - - - - + + + + + + \ No newline at end of file diff --git a/.kobalt/versionCheckTimestamp.txt b/.kobalt/versionCheckTimestamp.txt deleted file mode 100644 index 1a0362c..0000000 --- a/.kobalt/versionCheckTimestamp.txt +++ /dev/null @@ -1 +0,0 @@ -2016-07-07T05:15:22.444Z \ No newline at end of file diff --git a/README.html b/README.html index f775bec..f72ba14 100644 --- a/README.html +++ b/README.html @@ -238,13 +238,13 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf
<dependency>
     <groupId>net.thauvin.erik</groupId>
     <artifactId>semver</artifactId>
-    <version>0.9.5-beta</version>
+    <version>0.9.6-beta</version>
 </dependency>

Gradle

Class Generation

To install and run from Gradle, add the following to the build.gradle file:

dependencies {
-    compile 'net.thauvin.erik:semver:0.9.5-beta'
+    compile 'net.thauvin.erik:semver:0.9.6-beta'
 }

The GeneratedVersion class will be automatically created in the build directory upon compiling.

Class & Source Generation

@@ -254,11 +254,11 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf }

Then add the following to the build.gradle file:

dependencies {
-    compileOnly 'net.thauvin.erik:semver:0.9.5-beta'
+    compileOnly 'net.thauvin.erik:semver:0.9.6-beta'
 }
 
 annotationProcessor {
-    library 'net.thauvin.erik:semver:0.9.5-beta'
+    library 'net.thauvin.erik:semver:0.9.6-beta'
     processor 'net.thauvin.erik.semver.VersionProcessor'
     // sourcesDir 'src/generated/java'
 }
@@ -272,13 +272,13 @@ compileJava {
 

Kobalt

To install and run from Kobalt, add the following to the Build.kt file:

dependencies {
-    apt("net.thauvin.erik:semver:0.9.5-beta")
-    compile("net.thauvin.erik:semver:0.9.5-beta")
+    apt("net.thauvin.erik:semver:0.9.6-beta")
+    compile("net.thauvin.erik:semver:0.9.6-beta")
 }

Please look at the Build.kt file in the example module directory for a sample.

Auto-Increment

Incrementing the version is best left to your favorite build system.

For a solution using Gradle, please have a look at the build.gradle file in the example module directory. To run the example with patch version auto-incrementing, issue the following command:

-
gradle clean release run
+
gradle release run
diff --git a/README.md b/README.md index e325760..3c8d0ca 100644 --- a/README.md +++ b/README.md @@ -129,7 +129,7 @@ To install and run from [Maven](http://maven.apache.org/), configure an artifact net.thauvin.erik semver - 0.9.5-beta + 0.9.6-beta ``` @@ -141,7 +141,7 @@ To install and run from [Gradle](https://gradle.org/), add the following to the ```gradle dependencies { - compile 'net.thauvin.erik:semver:0.9.5-beta' + compile 'net.thauvin.erik:semver:0.9.6-beta' } ``` @@ -161,11 +161,11 @@ Then add the following to the `build.gradle` file: ```gradle dependencies { - compileOnly 'net.thauvin.erik:semver:0.9.5-beta' + compileOnly 'net.thauvin.erik:semver:0.9.6-beta' } annotationProcessor { - library 'net.thauvin.erik:semver:0.9.5-beta' + library 'net.thauvin.erik:semver:0.9.6-beta' processor 'net.thauvin.erik.semver.VersionProcessor' // sourcesDir 'src/generated/java' } @@ -186,8 +186,8 @@ To install and run from [Kobalt](http://beust.com/kobalt/), add the following to ```gradle dependencies { - apt("net.thauvin.erik:semver:0.9.5-beta") - compile("net.thauvin.erik:semver:0.9.5-beta") + apt("net.thauvin.erik:semver:0.9.6-beta") + compile("net.thauvin.erik:semver:0.9.6-beta") } ``` @@ -200,5 +200,5 @@ Incrementing the version is best left to your favorite build system. For a solution using [Gradle](https://gradle.org/), please have a look at the [build.gradle](https://github.com/ethauvin/semver/blob/master/example/build.gradle) file in the [example](https://github.com/ethauvin/semver/tree/master/example) module directory. To run the example with patch version auto-incrementing, issue the following command: ``` -gradle clean release run +gradle release run ``` \ No newline at end of file diff --git a/build.gradle b/build.gradle index 286d563..0d78176 100644 --- a/build.gradle +++ b/build.gradle @@ -1,5 +1,5 @@ plugins { - id "com.jfrog.bintray" version "1.5" + id "com.jfrog.bintray" version "1.5" } apply plugin: 'java' apply plugin: 'idea' @@ -10,27 +10,29 @@ import org.apache.tools.ant.taskdefs.condition.Os defaultTasks 'deploy' -def getVersion(isIncrement = false) { - def propsFile = 'version.properties' - def majorKey = 'version.major' - def minorKey = 'version.minor' - def patchKey = 'version.patch' - def metaKey = 'version.buildmeta' - def preKey = 'version.prerelease' - if (isIncrement) { - ant.propertyfile(file: propsFile) { - entry(key: patchKey, - type: 'int', - default: '-1', - operation: '+') - } - } - def p = new Properties() - file(propsFile).withInputStream { stream -> p.load(stream) } - def metadata = p.getProperty(metaKey, '') - def prerelease = p.getProperty(preKey, '') - return (p.getProperty(majorKey, '1') + '.' + p.getProperty(minorKey, '0') + '.' + p.getProperty(patchKey, '0') + - (prerelease.length() > 0 ? '-' + prerelease : '') + (metadata.length() > 0 ? '+' + metadata : '')) +def getVersion(isIncrement = false) +{ + def propsFile = 'version.properties' + def majorKey = 'version.major' + def minorKey = 'version.minor' + def patchKey = 'version.patch' + def metaKey = 'version.buildmeta' + def preKey = 'version.prerelease' + if (isIncrement) + { + ant.propertyfile(file: propsFile) { + entry(key: patchKey, + type: 'int', + default: '-1', + operation: '+') + } + } + def p = new Properties() + file(propsFile).withInputStream { stream -> p.load(stream) } + def metadata = p.getProperty(metaKey, '') + def prerelease = p.getProperty(preKey, '') + return (p.getProperty(majorKey, '1') + '.' + p.getProperty(minorKey, '0') + '.' + p.getProperty(patchKey, '0') + + (prerelease.length() > 0 ? '-' + prerelease : '') + (metadata.length() > 0 ? '+' + metadata : '')) } version = getVersion() @@ -54,164 +56,168 @@ def pkgLabels = ['java', 'annotation', 'processor', 'semantic', 'version'] [compileJava, compileTestJava]*.options*.encoding = 'UTF-8' repositories { - mavenLocal() - mavenCentral() + mavenLocal() + mavenCentral() jcenter() } dependencies { - compile 'org.apache.velocity:velocity:1.7' - testCompile 'org.testng:testng:6.9.12' + compile 'org.apache.velocity:velocity:1.7' + testCompile 'org.testng:testng:6.9.12' } bintray { - user = project.hasProperty('bintrayUser') ? project.property('bintrayUser') : System.getenv('BINTRAY_USER') - key = project.hasProperty('bintrayApiKey') ? project.property('bintrayApiKey') : System.getenv('BINTRAY_API_KEY') - publications = ['MyPublication'] - dryRun = true - pkg { - repo = 'maven' - name = mavenName - licenses = pkgLicenses - desc = mavenDescription - websiteUrl = mavenUrl - issueTrackerUrl = pkgIssueTrackerUrl - vcsUrl = mavenScmCon - labels = pkgLabels - publicDownloadNumbers = true - version { - name = project.version - desc = 'Version ' + project.version - vcsTag = project.version - gpg { - sign = true - } - } - } + user = project.hasProperty('bintrayUser') ? project.property('bintrayUser') : System.getenv('BINTRAY_USER') + key = project.hasProperty('bintrayApiKey') ? project.property('bintrayApiKey') : System.getenv('BINTRAY_API_KEY') + publications = ['MyPublication'] + dryRun = true + pkg { + repo = 'maven' + name = mavenName + licenses = pkgLicenses + desc = mavenDescription + websiteUrl = mavenUrl + issueTrackerUrl = pkgIssueTrackerUrl + vcsUrl = mavenScmCon + labels = pkgLabels + publicDownloadNumbers = true + version { + name = project.version + desc = 'Version ' + project.version + vcsTag = project.version + gpg { + sign = true + } + } + } } def pomConfig = { - licenses { - license { - name mavenLicense - url mavenLicenseUrl - distribution 'repo' - } - } - developers { - developer { - id 'ethauvin' - name 'Erik C. Thauvin' - email 'erik@thauvin.net' - } - } - scm { - connection 'scm:git:' + mavenScmCon - developerConnection 'scm:git:' + mavenScmDevCon - url mavenScmCon - } + licenses { + license { + name mavenLicense + url mavenLicenseUrl + distribution 'repo' + } + } + developers { + developer { + id 'ethauvin' + name 'Erik C. Thauvin' + email 'erik@thauvin.net' + } + } + scm { + connection 'scm:git:' + mavenScmCon + developerConnection 'scm:git:' + mavenScmDevCon + url mavenScmCon + } } publishing { - publications { - MyPublication(MavenPublication) { - from components.java - artifact sourcesJar - artifact javadocJar - groupId mavenGroupId - artifactId rootProject.name - version project.version + publications { + MyPublication(MavenPublication) { + from components.java + artifact sourcesJar + artifact javadocJar + groupId mavenGroupId + artifactId rootProject.name + version project.version - pom.withXml { - def root = asNode() - root.appendNode('name', mavenName) - root.appendNode('description', mavenDescription) - root.appendNode('url', mavenUrl) - root.children().last() + pomConfig - } - } - } + pom.withXml { + def root = asNode() + root.appendNode('name', mavenName) + root.appendNode('description', mavenDescription) + root.appendNode('url', mavenUrl) + root.children().last() + pomConfig + } + } + } } task javadocJar(type: Jar, dependsOn: javadoc) { - group = 'Build' - description = 'Builds an archive of the javadoc docs.' - classifier = 'javadoc' - from javadoc.destinationDir + group = 'Build' + description = 'Builds an archive of the javadoc docs.' + classifier = 'javadoc' + from javadoc.destinationDir } task sourcesJar(type: Jar) { - group = 'Build' - description = 'Builds an archive of the source code.' - classifier = 'sources' - from sourceSets.main.allSource + group = 'Build' + description = 'Builds an archive of the source code.' + classifier = 'sources' + from sourceSets.main.allSource } artifacts { - archives javadocJar - archives sourcesJar + archives javadocJar + archives sourcesJar } javadoc { - title = mavenDescription + ' ' + version - options.tags = ['created'] - options.author = true - options.addStringOption('link', 'http://docs.oracle.com/javase/8/docs/api/') - options.addStringOption('sourcepath', project.hasProperty('jdkSrc') ? jdkSrc : "$System.env.JAVA_HOME/src.zip") - if (JavaVersion.current().isJava8Compatible()) { - options.addStringOption('Xdoclint:none', '-quiet') - } + title = mavenDescription + ' ' + version + options.tags = ['created'] + options.author = true + options.addStringOption('link', 'http://docs.oracle.com/javase/8/docs/api/') + options.addStringOption('sourcepath', project.hasProperty('jdkSrc') ? jdkSrc : "$System.env.JAVA_HOME/src.zip") + if (JavaVersion.current().isJava8Compatible()) + { + options.addStringOption('Xdoclint:none', '-quiet') + } } test { - useTestNG() + useTestNG() } compileJava { - doFirst { - project.version = getVersion(isRelease) - } + doFirst { + project.version = getVersion(isRelease) + } } clean { - delete deployDir + delete deployDir } task copyToDeploy(type: Copy) { - from jar - into deployDir + from jar + into deployDir } task deploy(dependsOn: ['build', 'copyToDeploy']) { - description = 'Copies all needed files to the ${deployDir} directory.' - group = 'Publishing' - outputs.dir deployDir - inputs.files copyToDeploy - mustRunAfter clean + description = 'Copies all needed files to the ${deployDir} directory.' + group = 'Publishing' + outputs.dir deployDir + inputs.files copyToDeploy + mustRunAfter clean } task wrapper(type: Wrapper) { - gradleVersion = gradle.gradleVersion + gradleVersion = gradle.gradleVersion } -task release(dependsOn: ['deploy', 'wrapper']) << { - group = 'Publishing' - description = 'Releases new version.' - isRelease = true +task release(dependsOn: ['wrapper', 'clean', 'deploy']) << { + group = 'Publishing' + description = 'Releases new version.' + isRelease = true } task pandoc(type: Exec) { - group = 'Documentation' - def pandoc_args = ['--from', 'markdown_github', '--to', 'html5', '-s', '-c', 'github-pandoc.css', '-o', 'README.html', 'README.md'] - if (Os.isFamily(Os.FAMILY_WINDOWS)) { - commandLine(['cmd', '/c', 'pandoc'] + pandoc_args) - } else { - executable 'pandoc' - args pandoc_args - } - standardOutput = new ByteArrayOutputStream() - ext.output = { - return standardOutput.toString() - } + group = 'Documentation' + def pandoc_args = ['--from', 'markdown_github', '--to', 'html5', '-s', '-c', 'github-pandoc.css', '-o', 'README.html', 'README.md'] + if (Os.isFamily(Os.FAMILY_WINDOWS)) + { + commandLine(['cmd', '/c', 'pandoc'] + pandoc_args) + } + else + { + executable 'pandoc' + args pandoc_args + } + standardOutput = new ByteArrayOutputStream() + ext.output = { + return standardOutput.toString() + } } diff --git a/example/.idea/modules/example.iml b/example/.idea/modules/example.iml deleted file mode 100644 index 01812f4..0000000 --- a/example/.idea/modules/example.iml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/example/build.gradle b/example/build.gradle index 92e981e..fba701a 100644 --- a/example/build.gradle +++ b/example/build.gradle @@ -1,5 +1,5 @@ plugins { - id "com.ewerk.gradle.plugins.annotation-processor" version "1.0.2" + id "com.ewerk.gradle.plugins.annotation-processor" version "1.0.2" } apply plugin: 'java' apply plugin: 'idea' @@ -11,27 +11,29 @@ def isRelease = 'release' in gradle.startParameter.taskNames def deployDir = 'deploy' // Get version from properties file. Increment patch if specified. -def getVersion(isIncrement = false) { - def propsFile = 'version.properties' - def majorKey = 'version.major' - def minorKey = 'version.minor' - def patchKey = 'version.patch' - def metaKey = 'version.buildmeta' - def preKey = 'version.prerelease' - if (isIncrement) { - ant.propertyfile(file: propsFile) { - entry(key: patchKey, - type: 'int', - default: '-1', - operation: '+') - } - } - def p = new Properties() - file(propsFile).withInputStream { stream -> p.load(stream) } - def metadata = p.getProperty(metaKey, '') - def prerelease = p.getProperty(preKey, '') - return (p.getProperty(majorKey, '1') + '.' + p.getProperty(minorKey, '0') + '.' + p.getProperty(patchKey, '0') + - (prerelease.length() > 0 ? '-' + prerelease : '') + (metadata.length() > 0 ? '+' + metadata : '')) +def getVersion(isIncrement = false) +{ + def propsFile = 'version.properties' + def majorKey = 'version.major' + def minorKey = 'version.minor' + def patchKey = 'version.patch' + def metaKey = 'version.buildmeta' + def preKey = 'version.prerelease' + if (isIncrement) + { + ant.propertyfile(file: propsFile) { + entry(key: patchKey, + type: 'int', + default: '-1', + operation: '+') + } + } + def p = new Properties() + file(propsFile).withInputStream { stream -> p.load(stream) } + def metadata = p.getProperty(metaKey, '') + def prerelease = p.getProperty(preKey, '') + return (p.getProperty(majorKey, '1') + '.' + p.getProperty(minorKey, '0') + '.' + p.getProperty(patchKey, '0') + + (prerelease.length() > 0 ? '-' + prerelease : '') + (metadata.length() > 0 ? '+' + metadata : '')) } version = getVersion() @@ -40,55 +42,55 @@ mainClassName = 'net.thauvin.erik.semver.example.Example' [compileJava, compileTestJava]*.options*.encoding = 'UTF-8' repositories { - mavenLocal() - mavenCentral() + mavenLocal() + mavenCentral() } dependencies { - compileOnly 'net.thauvin.erik:semver:0.9.5-beta' + compileOnly 'net.thauvin.erik:semver:0.9.6-beta' } annotationProcessor { - // Update version, increment on release. - project.version = getVersion(isRelease) - library 'net.thauvin.erik:semver:0.9.5-beta' - processor 'net.thauvin.erik.semver.VersionProcessor' + // Update version, increment on release. + project.version = getVersion(isRelease) + library 'net.thauvin.erik:semver:0.9.6-beta' + processor 'net.thauvin.erik.semver.VersionProcessor' // sourcesDir 'src/generated/java' } compileJava { - options.compilerArgs << '-proc:none' + options.compilerArgs << '-proc:none' } jar { - manifest.attributes('Main-Class': mainClassName) + manifest.attributes('Main-Class': mainClassName) } clean { - delete deployDir + delete deployDir } task copyToDeploy(type: Copy) { - from jar - into deployDir + from jar + into deployDir } task deploy(dependsOn: ['build', 'copyToDeploy']) { - description = 'Copies all needed files to the ${deployDir} directory.' - group = 'Publishing' - outputs.dir deployDir - inputs.files copyToDeploy - mustRunAfter clean + description = 'Copies all needed files to the ${deployDir} directory.' + group = 'Publishing' + outputs.dir deployDir + inputs.files copyToDeploy + mustRunAfter clean } -task release(dependsOn: ['deploy', 'wrapper']) << { - group = 'Publishing' - description = 'Releases new version.' - isRelease = true +task release(dependsOn: ['clean', 'wrapper', 'deploy']) << { + group = 'Publishing' + description = 'Releases new version.' + isRelease = true } task wrapper(type: Wrapper) { - gradleVersion = gradle.gradleVersion + gradleVersion = gradle.gradleVersion } diff --git a/example/example.iml b/example/example.iml new file mode 100644 index 0000000..705f332 --- /dev/null +++ b/example/example.iml @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/example/example.ipr b/example/example.ipr index 760ec7f..04173d5 100644 --- a/example/example.ipr +++ b/example/example.ipr @@ -166,7 +166,7 @@