conventional-commits-version-policy
Used in:
components
- OverviewOverview
- VersionsVersions
- DependentsDependents
- DependenciesDependencies
<dependency> <groupId>nl.basjes.maven.release</groupId> <artifactId>conventional-commits-version-policy</artifactId> <version>1.0.5</version> </dependency>
<?xml version="1.0"?> <!-- ~ Conventional Commits Version Policy ~ Copyright (C) 2022-2024 Niels Basjes ~ ~ Licensed under the Apache License, Version 2.0 (the "License"); ~ you may not use this file except in compliance with the License. ~ You may obtain a copy of the License at ~ ~ https://www.apache.org/licenses/LICENSE-2.0 ~ ~ Unless required by applicable law or agreed to in writing, software ~ distributed under the License is distributed on an "AS IS" BASIS, ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ~ See the License for the specific language governing permissions and ~ limitations under the License. --> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <artifactId>conventional-commits-version-policy</artifactId> <packaging>jar</packaging> <groupId>nl.basjes.maven.release</groupId> <version>1.0.5</version> <name>Conventional Commits Version Policy for the maven-release-plugin</name> <description>A version policy for the maven-release plugin to calculate the next version using the conventional commits.</description> <url>https://maven.basjes.nl</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.build.outputEncoding>UTF-8</project.build.outputEncoding> <!-- The code must be for Java 8 --> <maven.compiler.source>8</maven.compiler.source> <maven.compiler.target>8</maven.compiler.target> <maven.compiler.release>8</maven.compiler.release> <!-- In order for everything to work correctly we need at least this version of maven. --> <maven.minimal.version>3.5.2</maven.minimal.version> <!-- Needed to make the build reproducible https://reproducible-builds.org/ --> <project.build.outputTimestamp>2024-01-13T14:33:18Z</project.build.outputTimestamp> <!-- ============================================== --> <dependency-check-maven.version>9.0.8</dependency-check-maven.version> <dependency-convergence.phase>validate</dependency-convergence.phase> <!-- ============================================== --> <!-- Needed to have a consistent version in the integration tests --> <maven-toolchains-plugin.version>3.1.0</maven-toolchains-plugin.version> <maven-compiler-plugin.version>3.12.1</maven-compiler-plugin.version> <maven-release-plugin.version>3.0.1</maven-release-plugin.version> <maven-scm-api.version>2.0.1</maven-scm-api.version> <org-eclipse-sisu.version>0.3.5</org-eclipse-sisu.version> <!-- See http://www.eclemma.org/jacoco/trunk/doc/prepare-agent-mojo.html --> <jacoco.surefireArgLine /> <!-- Disabled for now because it gives problems quite often while downloading the CVE databases. --> <dependency-check.skip>true</dependency-check.skip> <git-commit-id-maven-plugin.version>7.0.0</git-commit-id-maven-plugin.version> <version.copyright>Copyright (C) 2022-2024 Niels Basjes</version.copyright> <version.license>License Apache 2.0</version.license> <version.url>${project.url}</version.url> </properties> <dependencyManagement> <dependencies> <dependency> <groupId>org.junit</groupId> <artifactId>junit-bom</artifactId> <version>5.10.1</version> <type>pom</type> <scope>import</scope> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-bom</artifactId> <version>2.22.1</version> <scope>import</scope> <type>pom</type> </dependency> </dependencies> </dependencyManagement> <dependencies> <!-- Actual dependencies for this VersionPolicy --> <dependency> <groupId>com.fasterxml.jackson.dataformat</groupId> <artifactId>jackson-dataformat-xml</artifactId> <version>2.16.1</version> </dependency> <dependency> <groupId>org.semver</groupId> <artifactId>api</artifactId> <version>0.9.33</version> </dependency> <!-- The context of maven and the maven-release-plugin must be provided. --> <dependency> <groupId>org.apache.maven.release</groupId> <artifactId>maven-release-api</artifactId> <version>${maven-release-plugin.version}</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.apache.maven.scm</groupId> <artifactId>maven-scm-api</artifactId> <version>${maven-scm-api.version}</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.inject</groupId> <artifactId>javax.inject</artifactId> <version>1</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.eclipse.sisu</groupId> <artifactId>org.eclipse.sisu.inject</artifactId> <version>${org-eclipse-sisu.version}</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.codehaus.plexus</groupId> <artifactId>plexus-component-annotations</artifactId> <version>2.2.0</version> <optional>true</optional> </dependency> <!-- For testing --> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-engine</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-params</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-slf4j-impl</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.apache.maven.scm</groupId> <artifactId>maven-scm-provider-gitexe</artifactId> <version>${maven-scm-api.version}</version> <scope>test</scope> </dependency> </dependencies> <profiles> <profile> <id>skipQuality</id> <properties> <skipTests>true</skipTests> <rat.skip>true</rat.skip> <checkstyle.skip>true</checkstyle.skip> <jacoco.skip>true</jacoco.skip> <dependency-check.skip>true</dependency-check.skip> <dependency-convergence.phase>none</dependency-convergence.phase> <invoker.skip>true</invoker.skip> <cyclonedx.skip>true</cyclonedx.skip> <gpg.skip>true</gpg.skip> </properties> </profile> <profile> <id>useLocalReproduceRepo</id> <properties> <!--suppress UnresolvedMavenProperty --> <altReleaseDeploymentRepository>localReproduceRepo::file://${maven.multiModuleProjectDirectory}/__tmp_deploy/</altReleaseDeploymentRepository> <!--suppress UnresolvedMavenProperty --> <altSnapshotDeploymentRepository>localReproduceRepo::file://${maven.multiModuleProjectDirectory}/__tmp_deploy/</altSnapshotDeploymentRepository> </properties> <repositories> <repository> <id>localReproduceRepo</id> <!--suppress UnresolvedMavenProperty --> <url>file://${maven.multiModuleProjectDirectory}/__tmp_deploy/</url> </repository> </repositories> </profile> <profile> <id>artifactCompare</id> <build> <defaultGoal>clean verify</defaultGoal> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-artifact-plugin</artifactId> <version>3.5.0</version> <executions> <execution> <id>compare</id> <goals> <goal>compare</goal> </goals> <phase>verify</phase> </execution> </executions> </plugin> </plugins> </build> </profile> <profile> <id>packageForRelease</id> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-gpg-plugin</artifactId> <version>3.1.0</version> <executions> <execution> <id>sign-artifacts</id> <phase>verify</phase> <goals> <goal>sign</goal> </goals> <configuration> <gpgArguments> <arg>--pinentry-mode</arg> <arg>loopback</arg> </gpgArguments> </configuration> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-javadoc-plugin</artifactId> <version>3.6.3</version> <executions> <execution> <id>attach-javadocs</id> <goals> <goal>jar</goal> </goals> </execution> </executions> </plugin> <plugin> <!-- explicitly define maven-deploy-plugin after other to force exec order --> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-deploy-plugin</artifactId> <version>3.1.1</version> </plugin> </plugins> </build> </profile> <profile> <id>release</id> <build> <plugins> <plugin> <!-- Description: https://github.com/git-commit-id/git-commit-id-maven-plugin --> <groupId>io.github.git-commit-id</groupId> <artifactId>git-commit-id-maven-plugin</artifactId> <version>${git-commit-id-maven-plugin.version}</version> <executions> <execution> <id>Validate-Revision-Information</id> <phase>validate</phase> <goals> <goal>validateRevision</goal> </goals> <configuration> <validationProperties> <!-- verify that the current repository is not dirty --> <validationProperty> <name>Don't try to release if something has not yet been committed.</name> <!--suppress UnresolvedMavenProperty --> <value>${git.dirty}</value> <shouldMatchTo>false</shouldMatchTo> </validationProperty> <!-- verify that the current commit has a tag --> <validationProperty> <name>validating current commit has a tag</name> <!--suppress UnresolvedMavenProperty --> <value>${git.closest.tag.commit.count}</value> <shouldMatchTo>0</shouldMatchTo> </validationProperty> </validationProperties> <validationShouldFailIfNoMatch>true</validationShouldFailIfNoMatch> </configuration> </execution> </executions> </plugin> </plugins> </build> </profile> <profile> <id>deployToSonatype</id> <properties> <altReleaseDeploymentRepository>sonatype::https://oss.sonatype.org/service/local/staging/deploy/maven2/</altReleaseDeploymentRepository> <altSnapshotDeploymentRepository>sonatype::https://oss.sonatype.org/content/repositories/snapshots</altSnapshotDeploymentRepository> </properties> </profile> </profiles> <build> <defaultGoal>clean package</defaultGoal> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-toolchains-plugin</artifactId> <version>${maven-toolchains-plugin.version}</version> <executions> <execution> <goals> <goal>toolchain</goal> </goals> </execution> </executions> <configuration> <toolchains> <jdk> <version>17</version> </jdk> </toolchains> </configuration> </plugin> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <version>3.1.1</version> <executions> <execution> <id>Setup git commit hooks</id> <phase>validate</phase> <goals> <goal>exec</goal> </goals> <configuration> <executable>git</executable> <arguments> <argument>config</argument> <argument>core.hooksPath</argument> <argument>./devtools/git-hooks/</argument> </arguments> </configuration> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-artifact-plugin</artifactId> <version>3.5.0</version> <executions> <execution> <id>Ensure plugins are reproducible</id> <phase>validate</phase> <goals> <goal>check-buildplan</goal> </goals> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>3.3.0</version> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> <version>3.3.0</version> <executions> <execution> <id>attach-sources</id> <goals> <goal>jar-no-fork</goal> </goals> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-enforcer-plugin</artifactId> <version>3.4.1</version> <executions> <execution> <id>Check build environment requirements</id> <goals> <goal>enforce</goal> </goals> <configuration> <rules> <requireMavenVersion> <version>[${maven.minimal.version},)</version> <message>You must use Maven version ${maven.minimal.version} or newer to build this project.</message> <!-- Reasons for this need: --> <!-- https://issues.apache.org/jira/browse/MDEPLOY-221 --> <!-- https://issues.apache.org/jira/browse/MNG-6581 --> </requireMavenVersion> </rules> </configuration> </execution> <execution> <id>dependency-convergence</id> <phase>${dependency-convergence.phase}</phase> <goals> <goal>enforce</goal> </goals> <configuration> <rules> <dependencyConvergence /> </rules> </configuration> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>${maven-compiler-plugin.version}</version> <configuration> <compilerArgs> <!-- Enable almost all warnings. --> <!-- Ignore 'processing' to avoid "No processor claimed any of these annotations" in several places. --> <!-- Ignore 'serial' warnings about not having a serialVersionUID --> <!-- Ignore 'path' warnings (some dependencies have a bad classpath in their MANIFEST.MF) --> <!-- [WARNING] [path] bad path element --> <!-- "/home/nbasjes/.m2/repository/org/scala-lang/scala-compiler/2.12.7/scala-reflect.jar": --> <!-- no such file or directory --> <!-- https://stackoverflow.com/questions/41944939/maven-build-failure-involving-manifest-mf-classpath-in-dependency-jars --> <!-- https://stackoverflow.com/questions/1344202/bad-path-warning-where-is-it-coming-from --> <arg>-Xlint:all,-processing,-serial,-path</arg> <arg>-Werror</arg> <arg>-implicit:class</arg> </compilerArgs> <showWarnings>true</showWarnings> <showDeprecation>true</showDeprecation> <source>15</source> <target>15</target> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>3.2.5</version> <configuration> <argLine>@{jacoco.surefireArgLine} -Xmx2048m</argLine> <failIfNoTests>true</failIfNoTests> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-invoker-plugin</artifactId> <version>3.6.0</version> <dependencies> <dependency> <groupId>org.apache.groovy</groupId> <artifactId>groovy-xml</artifactId> <version>4.0.17</version> </dependency> </dependencies> <executions> <execution> <id>integration-test-prepare</id> <goals> <goal>install</goal> <goal>integration-test</goal> <goal>verify</goal> </goals> </execution> </executions> <configuration> <projectsDirectory>src/it</projectsDirectory> <cloneProjectsTo>${project.build.directory}/it</cloneProjectsTo> <postBuildHookScript>verify</postBuildHookScript> <localRepositoryPath>${project.build.directory}/local-repo</localRepositoryPath> <settingsFile>src/it/mrm/settings.xml</settingsFile> <filterProperties> <!--suppress UnresolvedMavenProperty --> <mrm.repository.url>${mrm.repository.url}</mrm.repository.url> </filterProperties> <debug>true</debug> <!-- <ignoreFailures>${maven.it.failure.ignore}</ignoreFailures>--> <setupIncludes> <setupInclude>setup/*/pom.xml</setupInclude> </setupIncludes> <pomIncludes> <pomInclude>projects/*/*pom.xml</pomInclude> </pomIncludes> <properties> <maven.compiler.source>${maven.compiler.source}</maven.compiler.source> <maven.compiler.target>${maven.compiler.target}</maven.compiler.target> <dryRun>true</dryRun> </properties> </configuration> </plugin> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>mrm-maven-plugin</artifactId> <version>1.6.0</version> <executions> <execution> <goals> <goal>start</goal> <goal>stop</goal> </goals> </execution> </executions> <configuration> <repositories> <mockRepo> <source>src/it/mrm/repository</source> </mockRepo> <proxyRepo /> </repositories> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-deploy-plugin</artifactId> <version>3.1.1</version> </plugin> <plugin> <!-- Description: https://github.com/git-commit-id/git-commit-id-maven-plugin --> <groupId>io.github.git-commit-id</groupId> <artifactId>git-commit-id-maven-plugin</artifactId> <version>${git-commit-id-maven-plugin.version}</version> <executions> <execution> <id>get-the-git-infos</id> <phase>validate</phase> <goals> <goal>revision</goal> </goals> </execution> </executions> <configuration> <dateFormat>yyyy-MM-dd '@' HH:mm:ss z</dateFormat> </configuration> </plugin> <plugin> <groupId>org.apache.rat</groupId> <artifactId>apache-rat-plugin</artifactId> <version>0.16</version> <inherited>false</inherited> <executions> <execution> <phase>validate</phase> <goals> <goal>check</goal> </goals> </execution> </executions> <configuration> <consoleOutput>true</consoleOutput> <excludeSubProjects>false</excludeSubProjects> <excludes> <!-- Build config files --> <exclude>.mvn/jvm.config</exclude> <!-- Version control files --> <exclude>**/.git/**</exclude> <exclude>**/.gitignore</exclude> <exclude>**/.gitmodules</exclude> <exclude>devtools/git-hooks/commit-msg.d/sailr.sh</exclude> <!-- IDE settings and files --> <exclude>**/.classpath</exclude> <exclude>**/.project</exclude> <exclude>**/.settings/**</exclude> <exclude>**/.idea/**</exclude> <exclude>**/*.iml</exclude> <exclude>**/.run/**</exclude> <exclude>**/*.patch</exclude> <exclude>**/*.diff</exclude> <!-- Documentation --> <exclude>documentation/**</exclude> <!-- Files that cannot be 'polluted' --> <exclude>docs/_config.yml</exclude> <exclude>docs/CNAME</exclude> <exclude>.github/**</exclude> <exclude>**/*.json</exclude> <exclude>**/*.ndjson</exclude> <!-- Files generated during build and/or development --> <exclude>**/target/**</exclude> <exclude>**/dependency-reduced-pom.xml</exclude> <!-- Other files --> <exclude>ReleaseProcedure.txt</exclude> <exclude>**/.~lock.*</exclude> <!-- Test scripts --> <exclude>*.sh</exclude> <exclude>**/_*/**</exclude> </excludes> </configuration> </plugin> <plugin> <groupId>org.owasp</groupId> <artifactId>dependency-check-maven</artifactId> <version>${dependency-check-maven.version}</version> <executions> <execution> <phase>validate</phase> <goals> <goal>check</goal> </goals> <configuration> <failBuildOnCVSS>1</failBuildOnCVSS> <skipProvidedScope>true</skipProvidedScope> <skipRuntimeScope>true</skipRuntimeScope> </configuration> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-release-plugin</artifactId> <version>${maven-release-plugin.version}</version> <dependencies> <dependency> <groupId>nl.basjes.maven.release</groupId> <artifactId>conventional-commits-version-policy</artifactId> <!-- Can only use an earlier release of self, updated using Renovate --> <version>1.0.4</version> </dependency> </dependencies> <configuration> <autoVersionSubmodules>true</autoVersionSubmodules> <scmCommentPrefix>Release:</scmCommentPrefix> <scmReleaseCommitComment>Release: Version @{releaseLabel}</scmReleaseCommitComment> <scmDevelopmentCommitComment>Release: Start development of next version</scmDevelopmentCommitComment> <scmRollbackCommitComment>Release: Rollback the release of @{releaseLabel}</scmRollbackCommitComment> <tagNameFormat>v@{project.version}</tagNameFormat> <preparationProfiles>packageForRelease</preparationProfiles> <preparationGoals>clean verify</preparationGoals> <releaseProfiles>packageForRelease,release,deployToSonatype</releaseProfiles> <pushChanges>false</pushChanges> <remoteTagging>false</remoteTagging> <projectVersionPolicyId>ConventionalCommitsVersionPolicy</projectVersionPolicyId> <projectVersionPolicyConfig> <versionTag>^v([0-9]+\.[0-9]+\.[0-9]+)$</versionTag> </projectVersionPolicyConfig> </configuration> </plugin> <plugin> <groupId>org.cyclonedx</groupId> <artifactId>cyclonedx-maven-plugin</artifactId> <version>2.7.10</version> <executions> <execution> <phase>package</phase> <goals> <goal>makeAggregateBom</goal> </goals> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-checkstyle-plugin</artifactId> <version>3.3.1</version> <dependencies> <dependency> <groupId>com.puppycrawl.tools</groupId> <artifactId>checkstyle</artifactId> <version>10.12.7</version> </dependency> </dependencies> <configuration> <consoleOutput>true</consoleOutput> <configLocation>devtools/checkstyle/checkstyle.xml</configLocation> <suppressionsLocation>devtools/checkstyle/suppressions.xml</suppressionsLocation> <includeTestSourceDirectory>true</includeTestSourceDirectory> </configuration> <!-- Runs by default in the verify phase (mvn verify or later in the build cycle) the 'check' goal will fail the build if it does not pass. "mvn checkstyle:check" will do this alone, or "mvn checkstyle:checkstyle" will report but not break --> <executions> <execution> <id>checkstyle-check</id> <phase>validate</phase> <goals> <goal>check</goal> </goals> </execution> </executions> </plugin> <!-- Coverage analysis for tests --> <plugin> <groupId>org.jacoco</groupId> <artifactId>jacoco-maven-plugin</artifactId> <version>0.8.11</version> <executions> <!-- Prepares the property pointing to the JaCoCo runtime agent which is passed as VM argument when Maven the Surefire plugin is executed. --> <execution> <id>pre-unit-test</id> <goals> <goal>prepare-agent</goal> </goals> <configuration> <!-- Sets the name of the property containing the settings for JaCoCo runtime agent. --> <propertyName>jacoco.surefireArgLine</propertyName> </configuration> </execution> <!-- Ensures that the code coverage report for unit tests is created after unit tests have been run. --> <execution> <id>post-unit-test</id> <phase>test</phase> <goals> <goal>report</goal> </goals> </execution> </executions> </plugin> </plugins> </build> <licenses> <license> <name>Apache License, Version 2.0</name> <url>https://www.apache.org/licenses/LICENSE-2.0.txt</url> <distribution>repo</distribution> </license> </licenses> <developers> <developer> <name>Niels Basjes</name> <email>niels@basjes.nl</email> <roles> <role>Architect</role> <role>Developer</role> </roles> <timezone>Europe/Amsterdam</timezone> </developer> </developers> <scm> <url>https://github.com/nielsbasjes/conventional-commits-maven-release</url> <connection>scm:git:https://github.com/nielsbasjes/conventional-commits-maven-release.git</connection> <developerConnection>scm:git:file:///${project.basedir}</developerConnection> <tag>v1.0.5</tag> </scm> </project>