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

Releasing doesn't remove "snapshot" from the jar names #371

Open
Calin-Cosma opened this issue Sep 5, 2022 · 4 comments
Open

Releasing doesn't remove "snapshot" from the jar names #371

Calin-Cosma opened this issue Sep 5, 2022 · 4 comments

Comments

@Calin-Cosma
Copy link

Calin-Cosma commented Sep 5, 2022

I have

version=0.0.1-SNAPSHOT

In the gradle.properties, but when I do release with release.useAutomaticVersion=true, the jars I find in build/libs have the "snapshot" suffix.

My build.gradle contains:

plugins {
    id 'java'
    id 'application'
    id 'maven-publish'
    id 'net.researchgate.release' version '3.0.1'
    id 'io.spring.dependency-management' version '1.0.12.RELEASE'
    id 'org.springframework.boot' version '2.7.2'
}

// some more stuff

publishing {
    publications {
        library(MavenPublication) {
            from components.java
        }
    }
    repositories {
        mavenLocal()
        // here i also had a private repo, but it's commented out for the moment
    }
}
@choesterle
Copy link

Same for me,
I have the following build.gradle

import java.time.LocalDate
import java.time.format.DateTimeFormatter

plugins {
    id 'org.springframework.boot' version '2.7.0'
    id 'io.spring.dependency-management' version '1.0.11.RELEASE'
    id 'java'
    id 'net.researchgate.release' version '3.0.2'
}

group = 'eu.lbase'
sourceCompatibility = '1.8'

repositories {
    mavenCentral()
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

test {
    useJUnitPlatform()
}

release {
    failOnCommitNeeded = false
    failOnUnversionedFiles = false
    def version = '${version}'
    def isoDate = LocalDate.now().format(DateTimeFormatter.BASIC_ISO_DATE)
    tagTemplate = "v_${version}-${isoDate}"
    git {
        requireBranch.set('')
    }
}

Now, when I start with the gradle build (v7.5.1) -->
gradlew clean build bootJar release -Prelease.useAutomaticVersion=true
I only find Snapshot jars in directory build/libs/

@SerCeMan
Copy link

SerCeMan commented Feb 2, 2023

I was experiencing the same problem. However, in my case, the issue was that the version property from the .kts script was taking preference over the gradle.properties file.

@madmike200590
Copy link

madmike200590 commented Mar 7, 2023

I am experiencing the same problem, but might have a hint on where to look: It seems this behavior is connected to the tagTemplate. With only the following block in the build.gradle.kts file, everything works fine:

configure<ReleaseExtension> {
	failOnUnversionedFiles.set(false)
	with(git) {
		requireBranch.set("master")
	}
}

i.e. running gradlew release -Prelease.useAutomaticVersion=true -Prelease.releaseVersion=0.16.0 -Prelease.newVersion=0.17.0-SNAPSHOT creates a tag called 0.16.0 and changes version in gradle.properties to 0.17.0-SNAPSHOT.

However, if I add tagTemplate.set("v${version}") to build.gradle.kts and run gradlew release -Prelease.useAutomaticVersion=true -Prelease.releaseVersion=0.17.0 -Prelease.newVersion=0.18.0-SNAPSHOT, I get a tag called v0.17.0-SNAPSHOT (i.e. content of gradle.properties pre-release) and a new snapshot version 0.18.0-SNAPSHOT.

Based on some quick skimming of the code, the issue seems to be in PluginHelper#tagName():

    String tagName() {
        def engine = new SimpleTemplateEngine()
        def binding = [
            "version": project.version,
            "name"   : project.name
        ]
        return engine.createTemplate(extension.tagTemplate.get()).make(binding).toString()
    }

The property used for the tag template seems to be project.version, however, when using useAutomaticVersion in conjucntion with an explicitly set version, that version is set through property release.releaseVersion, so I guess this would have to be available to the tag template as well.

@akomakom
Copy link

akomakom commented Nov 30, 2023

I was able to work around this.

I was having this issue only in Kotlin builds, and not in Groovy builds.

This build.gradle works (tag is made without -SNAPSHOT):

plugins {
  id 'net.researchgate.release' version '3.0.2'
}


release {
  tagTemplate = 'v${version}'  // note: single quotes
}

But this gradle.kts does not (tag is X.X.X-SNAPSHOT):

plugins {
    id("net.researchgate.release") version "3.0.2"
}

release {
    tagTemplate.set("v${version}")  // note: double quotes
}

This seems to be a runtime interpolation issue. Once I escaped the dollar sign, things worked:

plugins {
    id("net.researchgate.release") version "3.0.2"
}

release {
    tagTemplate.set("v\${version}")
}

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

No branches or pull requests

5 participants