Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

nextVersion and snapshotSuffix ignored when using new plugin syntax #3

Open
colindean opened this issue Apr 8, 2016 · 12 comments · May be fixed by #28
Open

nextVersion and snapshotSuffix ignored when using new plugin syntax #3

colindean opened this issue Apr 8, 2016 · 12 comments · May be fixed by #28
Labels

Comments

@colindean
Copy link
Contributor

This is likely user error, as I'm still pretty new to Gradle.

My incredibly pared down build.gradle, untested in this context:

plugins {
  id 'scala'
  id "com.cinnober.gradle.semver-git" version "2.2.2" // semantic versioning from git
}
apply plugin: 'scala'
ext {
  nextVersion = "patch"
  snapshotSuffix = "-dev-<count>-g<sha>"
}
apply plugin: "com.cinnober.gradle.semver-git"
task printVersion << {
  println project.ext.properties.containsKey("nextVersion")
  println project.ext.properties.get("nextVersion")
  println project.ext.nextVersion
  println project.ext.snapshotSuffix
  println project.version
}

I have a tag I created with git tag -a 99.9.9 -m "Test tag for testing". I have one commit more on top of it.

I expect the output of ./gradlew printVersion to contain 99.9.10-dev-1-gd34db33f or something similar. It instead prints something like this:

:printVersion
true
patch
patch
-dev-<count>-g<sha>
99.10.0-SNAPSHOT

I pretty certain that I have ext in the right place, but it appears not to be effective. What do I need to change?

I'm on Gradle 2.10.

@mojocinn
Copy link

Strange. You usage is more or less exactly how we use semver-git internally. You could try to apply semver-git with:

allprojects {
    ext.nextVersion = 'patch'
    ext.snapshotSuffix = "-dev-<count>-g<sha>"
    apply plugin: "com.cinnober.gradle.semver-git"
}

since that is how it is generally applied here, though it seems to me that your build file should work.

@colindean
Copy link
Contributor Author

Unfortunately, that still doesn't work. I'm going to try a barebones project and see what I can make happen. It's entirely possible that something else in our build.gradle is acting up.

@colindean
Copy link
Contributor Author

I'm able to reproduce it with the barebones config.

mkdir gradlewtf && cd gradlewtf
atom build.gradle

Put this in build.gradle:

plugins {
  id 'scala'
  id "com.cinnober.gradle.semver-git" version "2.2.2" // semantic versioning from git
}
apply plugin: 'scala'
ext {
  nextVersion = "patch"
  snapshotSuffix = "-dev-<count>-g<sha>"
}
apply plugin: "com.cinnober.gradle.semver-git"

Some exploration to try:

gw showVersion # behavior undefined, since we're not yet in a git repo
gw --version
git init .
git add build.gradle
git commit -m "Initial commit"
git tag -a 1.0.0 -m "Initial"
git describe
gw showVersion # 1.0.0 expected
echo ".gradle" >> .gitignore
git add .gitignore
git commit -av -m "Adds gitignore"
gw showVersion # 1.0.1-dev-1-gd34db33f or other hash expected

My output:

[13:22:25 cdean@lusankya /tmp ]
$ mkdir gradlewtf && cd gradlewtf
[13:22:26 cdean@lusankya /tmp/gradlewtf ]
$ atom build.gradle
[13:22:28 cdean@lusankya /tmp/gradlewtf ]
$ gw showVersion
No gradlew set up for this project; consider setting one up:
http://gradle.org/docs/current/userguide/gradle_wrapper.html

Using gradle at '/usr/local/bin/gradle' to run buildfile '/tmp/gradlewtf/build.gradle':

:showVersion
Version: 0.1.0-SNAPSHOT

BUILD SUCCESSFUL

Total time: 0.599 secs
[13:22:46 cdean@lusankya /tmp/gradlewtf ]
$ gw --version
No gradlew set up for this project; consider setting one up:
http://gradle.org/docs/current/userguide/gradle_wrapper.html

Using gradle at '/usr/local/bin/gradle' to run buildfile '/tmp/gradlewtf/build.gradle':


------------------------------------------------------------
Gradle 2.11
------------------------------------------------------------

Build time:   2016-02-08 07:59:16 UTC
Build number: none
Revision:     584db1c7c90bdd1de1d1c4c51271c665bfcba978

Groovy:       2.4.4
Ant:          Apache Ant(TM) version 1.9.3 compiled on December 23 2013
JVM:          1.8.0_66 (Oracle Corporation 25.66-b17)
OS:           Mac OS X 10.10.5 x86_64

[13:22:55 cdean@lusankya /tmp/gradlewtf ]
$ git init .
Initialized empty Git repository in /private/tmp/gradlewtf/.git/
[13:23:03 cdean@lusankya /tmp/gradlewtf ]
± (master #%) $ git add build.gradle
[13:23:04 cdean@lusankya /tmp/gradlewtf ]
± (master +) $ git commit -m "Initial commit"
[master (root-commit) 584d2b1] Initial commit
 1 file changed, 10 insertions(+)
 create mode 100644 build.gradle
[13:23:04 cdean@lusankya /tmp/gradlewtf ]
± (master) $ git tag -a 1.0.0 -m "Initial"
[13:23:05 cdean@lusankya /tmp/gradlewtf ]
± (master) $ git describe
1.0.0
[13:23:13 cdean@lusankya /tmp/gradlewtf ]
± (master) $ gw showVersion
No gradlew set up for this project; consider setting one up:
http://gradle.org/docs/current/userguide/gradle_wrapper.html

Using gradle at '/usr/local/bin/gradle' to run buildfile '/tmp/gradlewtf/build.gradle':

:showVersion
Version: 1.0.0

BUILD SUCCESSFUL

Total time: 0.649 secs
[13:23:26 cdean@lusankya /tmp/gradlewtf ]
± (master) $ echo ".gradle" >> .gitignore
[13:23:33 cdean@lusankya /tmp/gradlewtf ]
± (master %) $ git add .gitignore
[13:23:33 cdean@lusankya /tmp/gradlewtf ]
± (master +) $ git commit -av -m "Adds gitignore"
[master 41da2c7] Adds gitignore
 1 file changed, 1 insertion(+)
 create mode 100644 .gitignore
[13:23:34 cdean@lusankya /tmp/gradlewtf ]
± (master) $ git describe
1.0.0-1-g41da2c7
[13:23:38 cdean@lusankya /tmp/gradlewtf ]
± (master) $ gw showVersion
No gradlew set up for this project; consider setting one up:
http://gradle.org/docs/current/userguide/gradle_wrapper.html

Using gradle at '/usr/local/bin/gradle' to run buildfile '/tmp/gradlewtf/build.gradle':

:showVersion
Version: 1.1.0-SNAPSHOT

BUILD SUCCESSFUL

Total time: 0.562 secs
[13:23:45 cdean@lusankya /tmp/gradlewtf ]
± (master) $

As you can see, at the end, it's defaulting to bumping minor and -SNAPSHOT.

I've also tried switching to the java plugin in case the scala plugin does something weird. No difference.

@mbrannstrom
Copy link
Contributor

Hi Colin,

The project.version is assigned by semver-git when the plugin is applied. This means that the related properties must to be set before that step.

/Mikael

@colindean
Copy link
Contributor Author

I reversed the order so that the application of semver-git happens before anything else:

plugins {
  id 'java'
  id "com.cinnober.gradle.semver-git" version "2.2.2" // semantic versioning from git
}
ext {
  nextVersion = "patch"
  snapshotSuffix = "-dev-<count>-g<sha>"
}
apply plugin: "com.cinnober.gradle.semver-git"
apply plugin: 'java'

My configuration is still having no effect.

Thrashing a bit, I tried adding a buildscript block, but apparently that's not a valid approach since buildscript cannot contain a plugins block.

@colindean
Copy link
Contributor Author

I'm not sure what else I can change. @mbrannstrom @mojocinn, what version of Gradle are you using?

@colindean
Copy link
Contributor Author

OK, some progress:

buildscript {
  repositories {
    maven {
      url "https://plugins.gradle.org/m2/"
    }
  }
  dependencies {
    classpath "com.cinnober.gradle:semver-git:2.2.2"
  }
}

plugins {
  id 'java'
//  id "com.cinnober.gradle.semver-git" version "2.2.2" // semantic versioning from git
}

ext.nextVersion = "patch"
ext.snapshotSuffix = "-dev-<count>-g<sha>"

apply plugin: "com.cinnober.gradle.semver-git"
apply plugin: 'java'

This works, and so does this:

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath group: 'com.cinnober.gradle', name: 'semver-git', version: '2.2.0'
    }
}

plugins {
  id 'java'
//  id "com.cinnober.gradle.semver-git" version "2.2.2" // semantic versioning from git
}

ext.nextVersion = "patch"
ext.snapshotSuffix = "-dev-<count>-g<sha>"

apply plugin: "com.cinnober.gradle.semver-git"
apply plugin: 'java'
[15:10:56 cdean@lusankya /tmp/gradlewtf ]
± (master *) $ gw showVersion
No gradlew set up for this project; consider setting one up:
http://gradle.org/docs/current/userguide/gradle_wrapper.html

Using gradle at '/usr/local/bin/gradle' to run buildfile '/tmp/gradlewtf/build.gradle':

:showVersion
Version: 1.0.1--dev-1-g41da2c7

BUILD SUCCESSFUL

Total time: 0.683 secs

I can't remember exactly, but I think I found semver-git through the Gradle plugins page for semver-git and used the newer syntax. It works when I use the older syntax provided there, or the syntax (with an error fixed, submitting that momentarily) version of what's on this repo's README. I'm thinking that Gradle's newer plugins infrastructure doesn't load the plugin at the right time.

@colindean
Copy link
Contributor Author

Probably the take-away from this is a modification to the README which states NOT to use the newer plugins way of including it.

colindean added a commit to colindean/semver-git that referenced this issue Apr 11, 2016
Temporary workaround/documentation of Nasdaq#3
@mbrannstrom
Copy link
Contributor

The newer way plugins { id .. } has other problems as well. For example it does not work inside a submodules block, not for any gradle plugin.

It is an experimental feature, and I suggest always using the old buildscript { repositories .. } with apply plugin: ... syntax, because first it will be on the top level, then someone will move it to e.g. a submodules block, and then it won't work.

@colindean
Copy link
Contributor Author

Thanks for the insight.

On Apr 12, 2016, 01:48, at 01:48, "Mikael Brännström" [email protected] wrote:

The newer way plugins { id .. } has other problems as well. For
example it does not work inside a submodules block, not for any
gradle plugin.

It is an experimental feature, and I suggest always using the old
buildscript { repositories .. } with apply plugin: ... syntax,
because first it will be on the top level, then someone will move it to
e.g. a submodules block, and then it won't work.


You are receiving this because you authored the thread.
Reply to this email directly or view it on GitHub:
#3 (comment)

@colindean
Copy link
Contributor Author

I just got bit by this again on a new project. Is there any way to detect that it's running, or perhaps output some debug logging to show what it's doing? I probably burned 30 minutes trying to figure out what was incorrectly configured because someone else did it this time.

@deepy deepy changed the title nextVersion and snapshotSuffix ignored nextVersion and snapshotSuffix ignored when using new plugin syntax May 17, 2018
@deepy deepy self-assigned this May 22, 2018
@deepy
Copy link
Member

deepy commented May 22, 2018

@colindean if you move the ext {} into your buildscript {} this should work

If you want a simple debug, try

task version doLast {task -> println "This is $task.project.name $task.project.version" }

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants