diff --git a/docs/src/main/asciidoc/spring-cloud-release-tools.adoc b/docs/src/main/asciidoc/spring-cloud-release-tools.adoc index 4152e2f5..87340716 100644 --- a/docs/src/main/asciidoc/spring-cloud-release-tools.adoc +++ b/docs/src/main/asciidoc/spring-cloud-release-tools.adoc @@ -610,3 +610,15 @@ $ eval `ssh-agent` # to store the pass in the agent $ ssh-add ~/.ssh/id_rsa ---- + +==== Skipping version check + +If you know what you're doing and want to skip snapshot / milestone version check for poms or any other files, just set the following comment [`@releaser:version-check-off`] in the same line where the version appears. Example: + +[source,xml] +---- + + 1.19.2-M2 + 0.6.12 + +---- \ No newline at end of file diff --git a/releaser-core/src/main/java/releaser/internal/buildsystem/ProjectPomUpdater.java b/releaser-core/src/main/java/releaser/internal/buildsystem/ProjectPomUpdater.java index 46d41e63..abe97711 100644 --- a/releaser-core/src/main/java/releaser/internal/buildsystem/ProjectPomUpdater.java +++ b/releaser-core/src/main/java/releaser/internal/buildsystem/ProjectPomUpdater.java @@ -51,6 +51,8 @@ public class ProjectPomUpdater implements Closeable { // issue [#80] "^[\\s]*.*$"); + private static final String SPECIAL_LINE_IGNORING_COMMENT = "@releaser:version-check-off"; + private static final Logger log = LoggerFactory.getLogger(ProjectPomUpdater.class); private static final boolean UPDATE_FIXED_VERSIONS = true; @@ -237,6 +239,7 @@ public class ProjectPomUpdater implements Closeable { .stream() .filter(pattern -> IGNORED_SNAPSHOT_LINE_PATTERNS.stream() .noneMatch(line::matches) + && !line.contains(SPECIAL_LINE_IGNORING_COMMENT) && pattern.matcher(line).lookingAt()) .findFirst().orElse(null); if (matchingPattern != null) { diff --git a/releaser-core/src/test/java/releaser/internal/PomUpdateAcceptanceTests.java b/releaser-core/src/test/java/releaser/internal/PomUpdateAcceptanceTests.java index 3baa8817..7dc93b36 100644 --- a/releaser-core/src/test/java/releaser/internal/PomUpdateAcceptanceTests.java +++ b/releaser-core/src/test/java/releaser/internal/PomUpdateAcceptanceTests.java @@ -158,6 +158,32 @@ public class PomUpdateAcceptanceTests { ProjectPomUpdater projectPomUpdater = new ProjectPomUpdater(releaserProperties, Collections .singletonList(MavenBomParserAccessor.maven(releaserProperties))); + Projects projects = projects(projectPomUpdater); + File project = new File(this.temporaryFolder, + "/spring-cloud-sleuth-with-milestone-dep"); + + BDDAssertions + .thenThrownBy(() -> projectPomUpdater.updateProjectFromReleaseTrain( + project, projects, projects.forFile(project), true)) + .hasMessageContaining("1.19.2-M2"); + } + + @Test + public void should_not_fail_update_when_after_updating_a_release_candidate_version_there_still_is_a_milestone_version_with_a_line_to_ignore() + throws Exception { + ReleaserProperties releaserProperties = branchReleaserProperties(); + ProjectPomUpdater projectPomUpdater = new ProjectPomUpdater(releaserProperties, + Collections + .singletonList(MavenBomParserAccessor.maven(releaserProperties))); + Projects projects = projects(projectPomUpdater); + File project = new File(this.temporaryFolder, + "/spring-cloud-sleuth-with-ignored-line"); + + projectPomUpdater.updateProjectFromReleaseTrain(project, projects, + projects.forFile(project), true); + } + + private Projects projects(ProjectPomUpdater projectPomUpdater) { Projects projects = projectPomUpdater.retrieveVersionsFromReleaseTrainBom(); projects.removeIf( projectVersion -> projectVersion.projectName.equals("spring-cloud")); @@ -177,13 +203,7 @@ public class PomUpdateAcceptanceTests { projects.removeIf(projectVersion -> projectVersion.projectName .contains("spring-cloud-build")); projects.add(new ProjectVersion("spring-cloud-build", "1.4.2.RELEASE")); - File project = new File(this.temporaryFolder, - "/spring-cloud-sleuth-with-milestone-dep"); - - BDDAssertions - .thenThrownBy(() -> projectPomUpdater.updateProjectFromReleaseTrain( - project, projects, projects.forFile(project), true)) - .hasMessageContaining("1.19.2-M2"); + return projects; } @Test diff --git a/releaser-core/src/test/resources/projects/spring-cloud-sleuth-with-ignored-line/pom.xml b/releaser-core/src/test/resources/projects/spring-cloud-sleuth-with-ignored-line/pom.xml new file mode 100644 index 00000000..c29243aa --- /dev/null +++ b/releaser-core/src/test/resources/projects/spring-cloud-sleuth-with-ignored-line/pom.xml @@ -0,0 +1,368 @@ + + + 4.0.0 + + spring-cloud-sleuth + 0.2.0-SNAPSHOT + pom + Spring Cloud Sleuth + Spring Cloud Sleuth + + + org.springframework.cloud + spring-cloud-build + 1.4.2 + + + + + + https://github.com/spring-cloud/spring-cloud-sleuth + scm:git:git://github.com/spring-cloud/spring-cloud-sleuth.git + scm:git:ssh://git@github.com/spring-cloud/spring-cloud-sleuth.git + HEAD + + + + spring-cloud-sleuth-dependencies + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.1 + + + default-compile + + true + true + + ${maven.compiler.source} + ${maven.compiler.target} + + + + + default-testCompile + + true + true + + ${maven.compiler.testSource} + ${maven.compiler.testTarget} + + + + + + + org.apache.maven.plugins + maven-enforcer-plugin + 1.3.1 + + + enforce-java + + enforce + + + + + ${maven.compiler.testTarget} + + + + + + + + + + + org.apache.maven.plugins + maven-checkstyle-plugin + ${checkstyle.version} + + + org.springframework.cloud + spring-cloud-build-tools + ${spring-cloud-build.version} + + + + + validate + validate + + checkstyle.xml + LICENSE.txt + true + true + + + check + + + + + + + + + + + org.apache.maven.plugins + maven-checkstyle-plugin + ${checkstyle.version} + + checkstyle.xml + LICENSE.txt + + + + + + + + + org.springframework.cloud + spring-cloud-sleuth-dependencies + ${project.version} + pom + import + + + org.springframework.cloud + spring-cloud-netflix-dependencies + ${spring-cloud-netflix.version} + pom + import + + + org.springframework.cloud + spring-cloud-commons-dependencies + ${spring-cloud-commons.version} + pom + import + + + org.springframework.cloud + spring-cloud-stream-dependencies + ${spring-cloud-stream.version} + pom + import + + + + org.spockframework + spock-core + ${spock.version} + test + + + org.spockframework + spock-spring + ${spock.version} + test + + + cglib + cglib-nodep + 3.1 + + + org.objenesis + objenesis + 2.1 + + + + org.hamcrest + hamcrest-core + test + + + com.jayway.awaitility + awaitility + 1.7.0 + test + + + com.github.tomakehurst + wiremock + 2.5.1 + test + + + pl.pragmatists + JUnitParams + 1.0.6 + test + + + org.assertj + assertj-core + 3.6.2 + test + + + + + + 1.7 + 1.7 + 1.8 + 1.8 + 2.19.1 + 2.17 + 0.3.1-SNAPSHOT + 0.2.0-SNAPSHOT + Foo-SNAPSHOT + 0.3.0-SNAPSHOT + + + + + spring + + + spring-snapshots + Spring Snapshots + https://repo.spring.io/libs-snapshot-local + + true + + + false + + + + spring-milestones + Spring Milestones + https://repo.spring.io/libs-milestone-local + + false + + + false + + + + spring-releases + Spring Releases + https://repo.spring.io/release + + false + + + + + + spring-snapshots + Spring Snapshots + https://repo.spring.io/libs-snapshot-local + + true + + + false + + + + spring-milestones + Spring Milestones + https://repo.spring.io/libs-milestone-local + + false + + + + spring-releases + Spring Releases + https://repo.spring.io/libs-release-local + + false + + + + + + ide + + false + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.1 + + ${maven.compiler.testSource} + ${maven.compiler.testTarget} + + + + + + + benchmarks + + false + + + benchmarks + + + + sonar + + + + org.jacoco + jacoco-maven-plugin + + + pre-unit-test + + prepare-agent + + + surefireArgLine + ${project.build.directory}/jacoco.exec + + + + post-unit-test + test + + report + + + + ${project.build.directory}/jacoco.exec + + + + + + org.apache.maven.plugins + maven-surefire-plugin + ${surefire.plugin.version} + + + ${surefireArgLine} + + + + + + + + diff --git a/releaser-core/src/test/resources/projects/spring-cloud-sleuth-with-ignored-line/spring-cloud-sleuth-dependencies/pom.xml b/releaser-core/src/test/resources/projects/spring-cloud-sleuth-with-ignored-line/spring-cloud-sleuth-dependencies/pom.xml new file mode 100644 index 00000000..cac9ba46 --- /dev/null +++ b/releaser-core/src/test/resources/projects/spring-cloud-sleuth-with-ignored-line/spring-cloud-sleuth-dependencies/pom.xml @@ -0,0 +1,139 @@ + + + 4.0.0 + + spring-cloud-dependencies-parent + org.springframework.cloud + 1.4.2 + + + spring-cloud-sleuth-dependencies + 0.2.0-SNAPSHOT + pom + spring-cloud-sleuth-dependencies + Spring Cloud Sleuth Dependencies + + 1.19.2-M2 + 0.6.12 + + + + + org.springframework.cloud + spring-cloud-sleuth-core + ${project.version} + + + org.springframework.cloud + spring-cloud-sleuth-zipkin + ${project.version} + + + org.springframework.cloud + spring-cloud-sleuth-stream + ${project.version} + + + org.springframework.cloud + spring-cloud-sleuth-zipkin-stream + ${project.version} + + + org.springframework.cloud + spring-cloud-starter-zipkin + ${project.version} + + + org.springframework.cloud + spring-cloud-starter-sleuth + ${project.version} + + + io.zipkin.java + zipkin + ${zipkin.version} + + + io.zipkin.java + zipkin-server + ${zipkin.version} + + + io.zipkin.java + zipkin-autoconfigure-ui + ${zipkin.version} + + + io.zipkin.java + zipkin-autoconfigure-storage-mysql + ${zipkin.version} + + + io.zipkin.java + zipkin-junit + ${zipkin.version} + + + io.zipkin.reporter + zipkin-reporter + ${zipkin-reporter.version} + + + + + + spring + + + spring-snapshots + Spring Snapshots + https://repo.spring.io/libs-snapshot-local + + true + + + false + + + + spring-milestones + Spring Milestones + https://repo.spring.io/libs-milestone-local + + false + + + + spring-releases + Spring Releases + https://repo.spring.io/release + + false + + + + + + spring-snapshots + Spring Snapshots + https://repo.spring.io/libs-snapshot-local + + true + + + false + + + + spring-milestones + Spring Milestones + https://repo.spring.io/libs-milestone-local + + false + + + + + +