From 8eee59051b739cd8d2c2bd33bb3b57399f3674ce Mon Sep 17 00:00:00 2001 From: Bengt Brodersen Date: Wed, 29 Jun 2022 14:07:29 +0200 Subject: [PATCH 001/140] feat: add projectVersionPattern to use for version format placholder --- CHANGELOG.md | 8 +++++++ README.md | 22 ++++++++++++++++++- pom.xml | 2 +- .../maven/gitversioning/Configuration.java | 12 +++++++++- .../GitVersioningModelProcessor.java | 20 ++++++++++++++--- 5 files changed, 58 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ae41af65..f0668b01 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,14 @@ # Changelog +## 9.1.0 + +##### Features +- add config option for `` to use special parts of the project version as placeholders e.g. `${version.environment}` +- add placeholder `${version.core}` the core version component of `${version}` e.g. '1.2.3' + - `${version.release}` is marked as deprecated + + ## 9.0.1 ##### Fixes diff --git a/README.md b/README.md index c0ce1e0a..8e710f95 100644 --- a/README.md +++ b/README.md @@ -87,6 +87,7 @@ You can configure the version and properties adjustments for specific branches a - `` global disable(`true`)/enable(`false`) extension, default is `false`. - Can be overridden by command option, see [Parameters & Environment Variables](#parameters--environment-variables). +- `` An arbitrary regex to match project version, matching groups can be used as [Format Placeholders](#format-placeholders) (has to be a **full match pattern**) - `` An arbitrary regex to match tag names for git describe command (has to be a **full match pattern** e.g. `v(.+)`, default is `.*` - `` Enable(`true`)/disable(`false`) version and properties update in original pom file, default is `false` - Can be overridden by command option, see [Parameters & Environment Variables](#parameters--environment-variables). @@ -150,6 +151,7 @@ e.g `${dirty:-SNAPSHOT}` resolves to `-SNAPSHOT` instead of `-DIRTY`

- `${version}` `` set in `pom.xml` e.g. '1.2.3-SNAPSHOT' + - `${version.core}` the core version component of `${version}` e.g. '1.2.3' - `${version.major}` the major version component of `${version}` e.g. '1' - `${version.major.next}` the `${version.major}` increased by 1 e.g. '2' - `${version.minor}` the minor version component of `${version}` e.g. '2' @@ -158,9 +160,26 @@ e.g `${dirty:-SNAPSHOT}` resolves to `-SNAPSHOT` instead of `-DIRTY` - `${version.patch.next}` the `${version.patch}` increased by 1 e.g. '4' - `${version.label}` the version label of `${version}` e.g. 'SNAPSHOT' - `${version.label.prefixed}` like `${version.label}` with label separator e.g. '-SNAPSHOT' - - `${version.release}` like `${version}` without version labels like `-SNAPSHOT` e.g. '1.2.3'

+- Project Version Pattern Groups + - Content of regex groups in `` can be addressed like this: + - `${version.GROUP_NAME}` + - `${version.GROUP_INDEX}` + - Named Group Example + ```xml + + .+)-SNAPSHOT$]]> + + + + ${version.environment}-SNAPSHOT + + + + ``` +
+ - `${ref}` `${ref.slug}` ref name (branch or tag name or commit hash) - Ref Pattern Groups - Content of regex groups in `` can be addressed like this: @@ -192,6 +211,7 @@ e.g `${dirty:-SNAPSHOT}` resolves to `-SNAPSHOT` instead of `-DIRTY` - `${describe.distance}` The distance count to last matching tag - `${describe.tag}` The matching tag of `git describe` - `${describe.tag.version}` the tag version determined by regex `\d+\.\d+\.\d+` + - `${describe.tag.version.core}` the core version component of `${describe.tag.version}` e.g. '1.2.3' - `${describe.tag.version.major}` the major version component of `${describe.tag.version}` e.g. '1' - `${describe.tag.version.major.next}` the `${describe.tag.version.major}` increased by 1 e.g. '2' - `${describe.tag.version.minor}` the major version component of `${describe.tag.version}` e.g. '2' diff --git a/pom.xml b/pom.xml index ea5f0029..3febfa99 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ me.qoomon maven-git-versioning-extension - 9.0.1 + 9.1.0 maven-plugin Maven Git Versioning Extension diff --git a/src/main/java/me/qoomon/maven/gitversioning/Configuration.java b/src/main/java/me/qoomon/maven/gitversioning/Configuration.java index 9a75343e..2c389385 100644 --- a/src/main/java/me/qoomon/maven/gitversioning/Configuration.java +++ b/src/main/java/me/qoomon/maven/gitversioning/Configuration.java @@ -34,7 +34,17 @@ public class Configuration { public Boolean disable = false; @JsonDeserialize(using = IgnoreWhitespaceDeserializer.class) - public String describeTagPattern = MATCH_ALL; + public String projectVersionPattern = null; + + public Pattern projectVersionPattern() { + if(projectVersionPattern == null) { + return null; + } + return Pattern.compile(projectVersionPattern); + } + + @JsonDeserialize(using = IgnoreWhitespaceDeserializer.class) + public String describeTagPattern = null; public Pattern describeTagPattern() { if(describeTagPattern == null) { diff --git a/src/main/java/me/qoomon/maven/gitversioning/GitVersioningModelProcessor.java b/src/main/java/me/qoomon/maven/gitversioning/GitVersioningModelProcessor.java index 8a8fe826..cd466999 100644 --- a/src/main/java/me/qoomon/maven/gitversioning/GitVersioningModelProcessor.java +++ b/src/main/java/me/qoomon/maven/gitversioning/GitVersioningModelProcessor.java @@ -63,7 +63,7 @@ @Singleton public class GitVersioningModelProcessor extends DefaultModelProcessor { - private static final Pattern VERSION_PATTERN = Pattern.compile("(:?(?\\d+)(:?\\.(?\\d+)(:?\\.(?\\d+))?)?(:?-(?