diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml deleted file mode 100644 index 3cdc59b2..00000000 --- a/.github/workflows/build.yml +++ /dev/null @@ -1,27 +0,0 @@ -name: Build -on: [push] - -jobs: - build: - runs-on: ubuntu-latest - env: - MAVEN_OPTS: "-Dorg.slf4j.simpleLogger.showDateTime=true -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn" - MAVEN_CLI_OPTS: "--batch-mode --errors --fail-at-end --show-version" - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-java@v4 - with: - java-version: 11 - distribution: adopt - cache: maven - - name: Build with Maven - run: | - ./mvnw ${MAVEN_CLI_OPTS} package -DskipTests - - name: Test with Maven - run: | - unset GITHUB_ACTIONS - ./mvnw ${MAVEN_CLI_OPTS} test - ./mvnw ${MAVEN_CLI_OPTS} install -DskipTests - ./mvnw ${MAVEN_CLI_OPTS} failsafe:integration-test failsafe:verify - - diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml deleted file mode 100644 index bf74a873..00000000 --- a/.github/workflows/codeql-analysis.yml +++ /dev/null @@ -1,54 +0,0 @@ -name: "CodeQL" - -on: - push: - branches: [master, ] - pull_request: - # The branches below must be a subset of the branches above - branches: [master] - schedule: - - cron: '0 4 * * 3' - -jobs: - analyse: - name: Analyse - runs-on: ubuntu-latest - - steps: - - name: Checkout repository - uses: actions/checkout@v2 - with: - # We must fetch at least the immediate parents so that if this is - # a pull request then we can checkout the head. - fetch-depth: 2 - - # If this run was triggered by a pull request event, then checkout - # the head of the pull request instead of the merge commit. - - run: git checkout HEAD^2 - if: ${{ github.event_name == 'pull_request' }} - - # Initializes the CodeQL tools for scanning. - - name: Initialize CodeQL - uses: github/codeql-action/init@v1 - # Override language selection by uncommenting this and choosing your languages - # with: - # languages: go, javascript, csharp, python, cpp, java - - # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). - # If this step fails, then you should remove it and run the build manually (see below) - - name: Autobuild - uses: github/codeql-action/autobuild@v1 - - # ℹ️ Command-line programs to run using the OS shell. - # 📚 https://git.io/JvXDl - - # ✏️ If the Autobuild fails above, remove it and uncomment the following three lines - # and modify them (or add more) to build your code if your project - # uses a compiled language - - #- run: | - # make bootstrap - # make release - - - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v1 diff --git a/README.md b/README.md deleted file mode 100644 index e8db3a81..00000000 --- a/README.md +++ /dev/null @@ -1,400 +0,0 @@ -# Maven Git Versioning Extension [![starline](https://starlines.qoo.monster/assets/qoomon/maven-git-versioning-extension)](https://github.com/qoomon/starlines) - -[![Maven Central](https://img.shields.io/maven-central/v/me.qoomon/maven-git-versioning-extension.svg)](https://search.maven.org/artifact/me.qoomon/maven-git-versioning-extension) -[![Changelog](https://badgen.net/badge/changelog/%E2%98%85/blue)](CHANGELOG.md) -[![Build Workflow](https://github.com/qoomon/maven-git-versioning-extension/workflows/Build/badge.svg)](https://github.com/qoomon/maven-git-versioning-extension/actions?query=workflow%3ABuild) -[![LGTM Grade](https://img.shields.io/lgtm/grade/java/github/qoomon/maven-git-versioning-extension)](https://lgtm.com/projects/g/qoomon/maven-git-versioning-extension) - -**ℹ Also available as [Gradle Plugin](https://github.com/qoomon/gradle-git-versioning-plugin)** - -![Example](docs/MavenGitVersioningExtension.png) - -This extension can virtually set project version and properties, based on current **Git status** - -ℹ **No POM files will be modified, version and properties are modified in memory only** - -* Get rid of… - * Maven Release Plugin; see [Maven Release Plugin: The Final Nail in the Coffin](https://axelfontaine.com/blog/final-nail.html) - * editing `pom.xml` - * managing project versions within files and Git tags - * git merge conflicts - -#### Requirements -[* ⚠️ minimal required java version is `11`]() -* ⚠️ minimal required maven version is `3.6.4` - -## Usage - -⚠️ If you're using **IntelliJ** have a look at [IntelliJ Setup Instructions](#intellij---multi-modules-projects) - -### Add Extension to Maven Project - -create or update `${rootProjectDir}/.mvn/extensions.xml` file - -```xml - - - - - me.qoomon - maven-git-versioning-extension - 9.8.1 - - - -``` - -### Configure Extension - -ℹ Consider [CI/CD](#cicd-setup) section when running this extension in a CI/CD environment - -Create `${rootProjectDir}/.mvn/maven-git-versioning-extension.xml`. - -You can configure the version and properties adjustments for specific branches and tags. - -**Example:** `maven-git-versioning-extension.xml` - -```xml - - - - - .+ - ${ref}-SNAPSHOT - - ${ref} - - - - - .*)]]> - ${ref.version} - - - - - - ${commit} - - - -``` - -### Configuration Elements - -- `` 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`) or disable(`false`) following only the first parent in a merge commit - - default is `true` - -- `` 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). - -- `` List of ref configurations, ordered by priority. First matching - configuration will be used. - - `considerTagsOnBranches` By default, tags pointing at current commit will be ignored if HEAD is attached to a branch. - - If this option is `true` tags will always be taken into account. -

- - - `` specific ref patch definition. - - *required* `type` Ref type indicates which kind of ref will be matched against `pattern`, can be `branch` or `tag` - - `` An arbitrary regex to match ref names - - has to be a **full match pattern** e.g. `main` or `feature/.+` -

- - - `` An arbitrary regex to match tag names for git describe command - - has to be a **full match pattern** e.g. `v.+`) - - will override global `` value - - `` Enable(`true`) or disable(`false`) following only the first parent in a merge commit - - default is `true` -

- - - `` The new version format, see [Format Placeholders](#format-placeholders) - - `` - - `value` A property definition to update the value of a property. - - `` The property name - - `value` The new value format of the property, see [Format Placeholders](#format-placeholders) -

- - - `` - - `value` A property definition to add a user property to the maven session, active during the build. UserProperties with the same name of a property in the pom or this configuration file will take precedence as that is how maven handles user properties. - - `` The property name - - `value` The new value format of the property, see [Format Placeholders](#format-placeholders) - ```xml - - ${ref} - - ``` - - - `` Enable(`true`) or disable(`false`) version and properties update in original pom file - - will override global `` value - - -- `` Rev configuration will be used if no ref configuration is matching current git situation. - - same as `` configuration, except `type` attribute and `` element. - -- `` Add external projects as related project to update their versions as well. - ```xml - - - me.qoomon - base - - - ``` - -### Format Placeholders - -ℹ `….slug` placeholders means all `/` characters will be replaced by `-`. - -ℹ Final `version` will be slugified automatically, so no need to use `${….slug}` placeholders in `` format. - -ℹ define placeholder default value (placeholder is not defined '-' or empty ':-') like this `${name:-DEFAULT_VALUE}`
-e.g `${env.BUILD_NUMBER-0}` or `${env.BUILD_NUMBER:-local}` - -ℹ define placeholder overwrite value (placeholder is defined '+' and non-empty ':+' ) like this `${name:+OVERWRITE_VALUE}`
-e.g `${dirty:+SNAPSHOT}` resolves to `-SNAPSHOT` instead of `-DIRTY` - -###### Placeholders - -- `${env.VARIABLE}` Value of environment variable `VARIABLE` -- `${property.name}` Value of commandline property `-Dname=value` -

- -- `${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' - - `${version.minor.next}` the `${version.minor}` increased by 1 e.g. '3' - - `${version.patch}` the patch version component of `${version}` e.g. '3' - - `${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' -- 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: - - `${ref.GROUP_NAME}` `${ref.GROUP_NAME.slug}` - - `${ref.GROUP_INDEX}` `${ref.GROUP_INDEX.slug}` - - Named Group Example - ```xml - - .+)]]> - ${ref.feature}-SNAPSHOT - - ``` -
- -- `${commit}` commit hash '0fc20459a8eceb2c4abb9bf0af45a6e8af17b94b' -- `${commit.short}` commit hash (7 characters) e.g. '0fc2045' -- `${commit.timestamp}` commit timestamp (epoch seconds) e.g. '1560694278' -- `${commit.timestamp.year}` commit year e.g. '2021' -- `${commit.timestamp.year.2digit}` 2-digit commit year.g. '21' -- `${commit.timestamp.month}` commit month of year e.g. '12' -- `${commit.timestamp.day}` commit day of month e.g. '23' -- `${commit.timestamp.hour}` commit hour of day (24h)e.g. '13' -- `${commit.timestamp.minute}` commit minute of hour e.g. '59' -- `${commit.timestamp.second}` commit second of minute e.g. '30' -- `${commit.timestamp.datetime}` commit timestamp formatted as `yyyyMMdd.HHmmss`e.g. '20190616.161442' -- `${commit.timestamp.iso}` commit timestamp formatted as `yyyy-MM-ddTHH:mm:ssZ`e.g. '2019-06-16T16:14:42Z' -

- -- `${build.timestamp}` maven-build-timestamp (epoch seconds) e.g. '1560694278' -- `${build.timestamp.year}` maven-build-timestamp year e.g. '2021' -- `${build.timestamp.year.2digit}` 2-digit maven-build-timestamp year.g. '21' -- `${build.timestamp.month}` maven-build-timestamp month of year e.g. '12' -- `${build.timestamp.day}` maven-build-timestamp day of month e.g. '23' -- `${build.timestamp.hour}` maven-build-timestamp hour of day (24h)e.g. '13' -- `${build.timestamp.minute}` maven-build-timestamp minute of hour e.g. '59' -- `${build.timestamp.second}` maven-build-timestamp second of minute e.g. '30' -- `${build.timestamp.datetime}` maven-build-timestamp formatted as `yyyyMMdd.HHmmss`e.g. '20190616.161442' -- `${build.timestamp.iso}` commit timestamp formatted as `yyyy-MM-ddTHH:mm:ssZ`e.g. '2019-06-16T16:14:42Z' -

- -- `${describe}` Will resolve to `git describe` output -- `${describe.distance}` The distance count to last matching tag -- `${describe.distance.snapshot}` Empty string on matching tag, `-SNAPSHOT` if `describe.distance > 0` -- `${describe.tag}` The matching tag of `git describe` - - `${describe.tag.version}` the tag version determined by regex `(?(?(?\d+)(?:\.(?\d+)(?:\.(?\d+))?)?)(?:-(?