parent
Used in:
components
- OverviewOverview
- VersionsVersions
- DependentsDependents
- DependenciesDependencies
<dependency> <groupId>dev.ikm.build</groupId> <artifactId>parent</artifactId> <version>1.59.0</version> </dependency>
<?xml version="1.0" encoding="UTF-8"?> <project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>dev.ikm.build</groupId> <artifactId>parent</artifactId> <version>1.59.0</version> <name>General Build Parent</name> <description> The General Parent that helps to define the build processes that should be used across projects, regardless of. Package type. This is versioned and if you want to use a different version of the pom, you can simply change the parent version and it will adjust all of the properties being used throughout, as the properties and plugins will be inherited by subprojects. </description> <packaging>pom</packaging> <inceptionYear>2015</inceptionYear> <licenses> <license> <name>Apache License, Version 2.0</name> <url>https://www.apache.org/licenses/LICENSE-2.0.txt</url> <distribution>repo</distribution> <comments>A business-friendly OSS license</comments> </license> </licenses> <scm> <url>http://www.github.com/ikmdev/build-parent</url> </scm> <developers> <developer> <id>ikmdev</id> <name>IKM Development Team</name> <email>support@ikm.dev</email> </developer> </developers> <issueManagement> <system>GitHub</system> <url>https://github.com/ikmdev/build-parent/issues</url> </issueManagement> <url>http://www.ikm.dev</url> <organization> <name>Integrated Knowledge Management</name> <url>http://www.ikm.dev</url> </organization> <properties> <!-- Project Encoding --> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.build.resourceEncoding>UTF-8</project.build.resourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <!-- Java and Maven versions --> <java.version>23</java.version> <maven.version>3.9.9</maven.version> <!-- Clean Lifecycle --> <maven.clean-plugin.version>3.4.1</maven.clean-plugin.version> <!-- POM Lifecycle --> <maven.plugin-plugin.version>3.15.1</maven.plugin-plugin.version> <maven.install-plugin.version>3.1.4</maven.install-plugin.version> <maven.deploy-plugin.version>3.1.4</maven.deploy-plugin.version> <!-- Site Lifecycle --> <maven.site.plugin>3.21.0</maven.site.plugin> <maven.versions.plugin>2.18.0</maven.versions.plugin> <maven.project-info-reports-plugin.version>3.9.0</maven.project-info-reports-plugin.version> <!-- Command Line tooling --> <maven.dependency-plugin.version>3.8.1</maven.dependency-plugin.version> <maven.assembly-plugin.version>3.7.1</maven.assembly-plugin.version> <maven.assembly.version>${maven.assembly-plugin.version}</maven.assembly.version> <maven.wrapper-plugin.version>3.3.2</maven.wrapper-plugin.version> <!-- Release plugins --> <maven.gpg-plugin.version>3.2.7</maven.gpg-plugin.version> <maven.enforcer-plugin.version>3.5.0</maven.enforcer-plugin.version> <semver-enforcer-rule.version>0.9.33</semver-enforcer-rule.version> <maven.directory.plugin>1.0</maven.directory.plugin> <!-- Google license plugin--> <maven-license-plugin.version>4.1</maven-license-plugin.version> <!-- Mojohaus license plugin--> <maven-mojo-license-plugin.version>2.5.0</maven-mojo-license-plugin.version> <maven.changes-plugin.version>2.12.1</maven.changes-plugin.version> <maven.sonarqube.version>5.1.0.4751</maven.sonarqube.version> <maven.github-flow.version>1.21.1-r4</maven.github-flow.version> <nexus-staging-maven-plugin.version>1.7.0</nexus-staging-maven-plugin.version> <build-helper-maven-plugin.version>3.6.0</build-helper-maven-plugin.version> <maven-javadoc-plugin.version>3.11.2</maven-javadoc-plugin.version> <maven-source-plugin.version>3.3.1</maven-source-plugin.version> <maven.antrun.plugin>3.1.0</maven.antrun.plugin> <!--properties required for sonarqube analysis--> <sonar.organization>ikmdev</sonar.organization> <sonar.host.url>https://sonarcloud.io</sonar.host.url> </properties> <modules> <module>java-parent</module> </modules> <build> <pluginManagement> <plugins> <!--======================================================--> <!-- Clean Lifecycle --> <!--======================================================--> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-clean-plugin</artifactId> <version>${maven.clean-plugin.version}</version> </plugin> <!--======================================================--> <!-- POM Lifecycle --> <!--======================================================--> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-install-plugin</artifactId> <version>${maven.install-plugin.version}</version> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-deploy-plugin</artifactId> <version>${maven.deploy-plugin.version}</version> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> <version>${maven-source-plugin.version}</version> </plugin> <!--======================================================--> <!-- Command-Line tooling --> <!--======================================================--> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-plugin-plugin</artifactId> <version>${maven.plugin-plugin.version}</version> </plugin> <plugin> <groupId>org.apache.maven.wrapper</groupId> <artifactId>maven-wrapper</artifactId> <version>${maven.wrapper-plugin.version}</version> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-gpg-plugin</artifactId> <version>${maven.gpg-plugin.version}</version> </plugin> <plugin> <groupId>org.commonjava.maven.plugins</groupId> <artifactId>directory-maven-plugin</artifactId> <version>${maven.directory.plugin}</version> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <version>${maven.dependency-plugin.version}</version> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-assembly-plugin</artifactId> <version>${maven.assembly-plugin.version}</version> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-enforcer-plugin</artifactId> <version>${maven.enforcer-plugin.version}</version> <executions> <execution> <id>enforce-maven</id> <goals> <goal>enforce</goal> </goals> <configuration> <rules> <requireMavenVersion> <version>(3.9,)</version> </requireMavenVersion> </rules> </configuration> </execution> <execution> <id>enforce-java</id> <goals> <goal>enforce</goal> </goals> <configuration> <rules> <requireJavaVersion> <version>${java.version}</version> </requireJavaVersion> </rules> </configuration> </execution> </executions> </plugin> <!-- Maven Versions plugin--> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>versions-maven-plugin</artifactId> <version>${maven.versions.plugin}</version> <configuration> <ruleSet> <ignoreVersion> <type>regex</type> <version>.+-(alpha|beta).+</version> </ignoreVersion> <ignoreVersion> <type>regex</type> <version>.+-(M|m).+</version> </ignoreVersion> <ignoreVersion> <type>regex</type> <version>.+-(RC|rc).+</version> </ignoreVersion> <ignoreVersion> <type>regex</type> <version>(.+-SNAPSHOT|.+-M\d)</version> </ignoreVersion> </ruleSet> </configuration> </plugin> <!-- Mojohaus license plugin--> <!-- Can run on any project by typing the following at the top of the repository: mvn org.codehaus.mojo:license-maven-plugin:2.2.0:update-project-license -N --> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>license-maven-plugin</artifactId> <version>${maven-mojo-license-plugin.version}</version> </plugin> <!-- Used to extract changes from JIRA/GitHub --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-changes-plugin</artifactId> <version>${maven.changes-plugin.version}</version> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-project-info-reports-plugin</artifactId> <version>${maven.project-info-reports-plugin.version}</version> </plugin> <plugin> <groupId>org.sonarsource.scanner.maven</groupId> <artifactId>sonar-maven-plugin</artifactId> <version>${maven.sonarqube.version}</version> </plugin> <!-- This plugin is provided to help with feature development and releasing --> <plugin> <groupId>dev.ikm</groupId> <artifactId>gitflow-maven-plugin</artifactId> <version>${maven.github-flow.version}</version> <configuration> <featureNamePattern>^(?!(((feature|hotfix|bugfix))\/(IKM|AR|IAT|IC|IKMC|IKDT|IKMD|IIA|IKMW|IKMM|TE)-\d+(-[0-9A-Za-z\-]*)*)|main|prod|master|dev).*$</featureNamePattern> <separateFinishBranches>true</separateFinishBranches> <gitFlowConfig> <developmentBranch>main</developmentBranch> <productionBranch>main</productionBranch> <featureBranchPrefix>feature/</featureBranchPrefix> <finishBranchPrefix>finished/</finishBranchPrefix> <hotfixBranchPrefix>hotfix/</hotfixBranchPrefix> <supportBranchPrefix>support/</supportBranchPrefix> <releaseBranchPrefix>release/</releaseBranchPrefix> </gitFlowConfig> <commitMessages> <featureStartMessage>Update version to start feature: @{featureName}</featureStartMessage> <featureFinishMessage>Update version to finish feature: @{featureName}</featureFinishMessage> <releaseStartMessage>Update release version: @{version}</releaseStartMessage> <tagReleaseMessage>Tag release: @{version}</tagReleaseMessage> <releaseFinishMessage>Update development version: @{version}</releaseFinishMessage> </commitMessages> </configuration> </plugin> <!-- This plugin stage the artifacts to the OSSRH Repository, release and sync them with Central Repository --> <plugin> <groupId>org.sonatype.plugins</groupId> <artifactId>nexus-staging-maven-plugin</artifactId> <version>${nexus-staging-maven-plugin.version}</version> </plugin> <!-- This plugin contains various small independent goals to assist with the Maven build lifecycle --> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>build-helper-maven-plugin</artifactId> <version>${build-helper-maven-plugin.version}</version> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-javadoc-plugin</artifactId> <version>${maven-javadoc-plugin.version}</version> </plugin> <!-- Used for executing tasking that does not fit into Maven cleanly --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-antrun-plugin</artifactId> <version>${maven.antrun.plugin}</version> </plugin> </plugins> </pluginManagement> <plugins> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>license-maven-plugin</artifactId> <configuration> <licenseName>apache_v2</licenseName> </configuration> </plugin> <plugin> <groupId>dev.ikm</groupId> <artifactId>gitflow-maven-plugin</artifactId> </plugin> </plugins> </build> <reporting> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-site-plugin</artifactId> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-project-info-reports-plugin</artifactId> <reportSets> <reportSet> <reports> <report>index</report> <report>licenses</report> <report>modules</report> <report>dependency-info</report> <report>plugins</report> <report>scm</report> <report>summary</report> </reports> </reportSet> </reportSets> <configuration> <dependencyLocationsEnabled>false</dependencyLocationsEnabled> <dependencyDetailsEnabled>false</dependencyDetailsEnabled> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jxr-plugin</artifactId> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-plugin-plugin</artifactId> </plugin> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>versions-maven-plugin</artifactId> <reportSets> <reportSet> <reports> <report>dependency-updates-report</report> <report>plugin-updates-report</report> <report>property-updates-report</report> </reports> </reportSet> <reportSet> <id>aggregate</id> <inherited>false</inherited> <reports> <report>dependency-updates-aggregate-report</report> <report>plugin-updates-aggregate-report</report> <report>property-updates-aggregate-report</report> </reports> </reportSet> </reportSets> </plugin> </plugins> </reporting> <profiles> <profile> <id>source-resources-additional-tasks</id> <activation> <file> <exists>${basedir}/src/main/resources</exists> </file> </activation> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <executions> <execution> <id>jar-resources</id> <goals> <goal>jar</goal> </goals> <phase>package</phase> <configuration> <classesDirectory>${basedir}/src/main/resources</classesDirectory> <classifier>resources</classifier> </configuration> </execution> </executions> </plugin> </plugins> </build> </profile> <profile> <id>test-resources-additional-tasks</id> <activation> <file> <exists>${basedir}/src/test/resources</exists> </file> </activation> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <executions> <execution> <id>jar-test-resources</id> <goals> <goal>jar</goal> </goals> <phase>package</phase> <configuration> <classesDirectory>${basedir}/src/test/resources</classesDirectory> <classifier>test-resources</classifier> </configuration> </execution> </executions> </plugin> </plugins> </build> </profile> <profile> <!-- To disable this, use something like "mvn install -P!codeQuality" --> <id>codeQuality</id> <activation> <activeByDefault>false</activeByDefault> </activation> <build> <plugins> <!--======================================================--> <!-- Code Quality Checks --> <!--======================================================--> <!-- Use of Enforcer plugin to: * Not allow snapshots * Require semantic Versioning Conformance --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-enforcer-plugin</artifactId> <executions> <execution> <id>enforce-no-snapshots</id> <goals> <goal>enforce</goal> </goals> <configuration> <rules> <requireReleaseDeps> <message>No Snapshots Allowed!</message> <failWhenParentIsSnapshot>false</failWhenParentIsSnapshot> </requireReleaseDeps> </rules> <fail>false</fail> </configuration> </execution> <execution> <id>enforce-no-bad-sections</id> <goals> <goal>enforce</goal> </goals> <configuration> <rules> <banDistributionManagement/> <banDuplicatePomDependencyVersions/> <banDynamicVersions> <allowSnapshots>true</allowSnapshots> <allowRelease>false</allowRelease> <allowLatest>false</allowLatest> <allowRanges>false</allowRanges> <excludeOptionals>false</excludeOptionals> <excludedScopes/> <ignores/> </banDynamicVersions> <requireProperty> <property>project.version</property> <message>"Project version must be a semantic version."</message> <regex> ^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$ </regex> <regexMessage>"Project version must match the pattern 1.2.3."</regexMessage> </requireProperty> </rules> <fail>true</fail> </configuration> </execution> <execution> <id>enforce-maven</id> <goals> <goal>enforce</goal> </goals> <configuration> <rules> <requireMavenVersion> <version>(3.9,)</version> </requireMavenVersion> </rules> </configuration> </execution> <execution> <id>enforce-java</id> <goals> <goal>enforce</goal> </goals> <configuration> <rules> <requireJavaVersion> <version>${java.version}</version> </requireJavaVersion> </rules> </configuration> </execution> </executions> <dependencies> <dependency> <groupId>org.semver</groupId> <artifactId>enforcer-rule</artifactId> <version>${semver-enforcer-rule.version}</version> </dependency> </dependencies> </plugin> <!-- Use of Custom plugin to force versions into properties --> <plugin> <groupId>com.github.jlgrock</groupId> <artifactId>pom-check-maven-plugin</artifactId> <executions> <execution> <!-- Requires maven > 3.3.x --> <goals> <goal>version-check</goal> </goals> <phase>validate</phase> </execution> </executions> </plugin> </plugins> </build> </profile> <profile> <id>signArtifacts</id> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-gpg-plugin</artifactId> <executions> <execution> <id>sign-artifacts</id> <phase>verify</phase> <goals> <goal>sign</goal> </goals> </execution> </executions> <configuration> <gpgArguments> <argument>--pinentry-mode</argument> <argument>loopback</argument> <argument>--yes</argument> <argument>--verbose</argument> </gpgArguments> </configuration> </plugin> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>build-helper-maven-plugin</artifactId> <executions> <execution> <id>attach-artifacts</id> <phase>deploy</phase> <goals> <goal>attach-artifact</goal> </goals> <configuration> <artifacts> <artifact> <file>${project.build.directory}/*.asc</file> <type>asc</type> </artifact> </artifacts> </configuration> </execution> </executions> </plugin> </plugins> </build> </profile> <profile> <id>release-enforcement</id> <activation> <activeByDefault>false</activeByDefault> </activation> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-enforcer-plugin</artifactId> <executions> <execution> <id>enforce-no-snapshots</id> <goals> <goal>enforce</goal> </goals> <configuration> <rules> <requireReleaseDeps> <message>No Snapshots Allowed!</message> <failWhenParentIsSnapshot>true</failWhenParentIsSnapshot> </requireReleaseDeps> </rules> <fail>true</fail> </configuration> </execution> <execution> <id>enforce-no-bad-sections</id> <goals> <goal>enforce</goal> </goals> <configuration> <rules> <banDynamicVersions> <allowSnapshots>false</allowSnapshots> </banDynamicVersions> </rules> <fail>true</fail> </configuration> </execution> </executions> </plugin> </plugins> </build> </profile> <profile> <id>emptySourceJavadocOSSRH</id> <activation> <property> <name>repositoryIdOSSRH</name> <value>true</value> </property> </activation> <distributionManagement> <snapshotRepository> <id>ossrh</id> <url>https://s01.oss.sonatype.org/content/repositories/snapshots</url> </snapshotRepository> <repository> <id>maven-releases</id> <url>https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/</url> </repository> </distributionManagement> <build> <plugins> <!-- Generate empty Java Doc jar and source jar --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <executions> <execution> <id>default-jar</id> <phase>package</phase> <goals> <goal>jar</goal> </goals> </execution> <execution> <id>javadoc-jar</id> <phase>package</phase> <goals> <goal>jar</goal> </goals> <configuration> <classifier>javadoc</classifier> </configuration> </execution> <execution> <id>sources-jar</id> <phase>package</phase> <goals> <goal>jar</goal> </goals> <configuration> <classifier>sources</classifier> </configuration> </execution> </executions> </plugin> </plugins> </build> </profile> <profile> <id>sourceJavadocOSSRH</id> <activation> <property> <name>repositoryIdOSSRH</name> <value>true</value> </property> </activation> <distributionManagement> <snapshotRepository> <id>ossrh</id> <url>https://s01.oss.sonatype.org/content/repositories/snapshots</url> </snapshotRepository> <repository> <id>maven-releases</id> <url>https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/</url> </repository> </distributionManagement> <build> <plugins> <!-- Generate Java Doc jar --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-javadoc-plugin</artifactId> <configuration> <doclint>none</doclint> <source>${java.version}</source> <release>${java.version}</release> </configuration> <executions> <execution> <id>jar</id> <phase>package</phase> <goals> <goal>jar</goal> </goals> </execution> </executions> </plugin> <!-- Source Files --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> <executions> <execution> <id>attach-sources</id> <phase>package</phase> <goals> <goal>jar</goal> </goals> </execution> </executions> </plugin> </plugins> </build> </profile> <profile> <id>stageOSSRH</id> <activation> <property> <name>repositoryIdOSSRH</name> <value>true</value> </property> </activation> <distributionManagement> <snapshotRepository> <id>ossrh</id> <url>https://s01.oss.sonatype.org/content/repositories/snapshots</url> </snapshotRepository> <repository> <id>maven-releases</id> <url>https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/</url> </repository> </distributionManagement> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-gpg-plugin</artifactId> <executions> <execution> <id>sign-artifacts</id> <phase>verify</phase> <goals> <goal>sign</goal> </goals> </execution> </executions> <configuration> <gpgArguments> <argument>--pinentry-mode</argument> <argument>loopback</argument> <argument>--yes</argument> <argument>--verbose</argument> </gpgArguments> </configuration> </plugin> <plugin> <groupId>org.sonatype.plugins</groupId> <artifactId>nexus-staging-maven-plugin</artifactId> <extensions>true</extensions> <configuration> <serverId>ossrh</serverId> <nexusUrl>https://s01.oss.sonatype.org/</nexusUrl> <autoReleaseAfterClose>true</autoReleaseAfterClose> </configuration> </plugin> </plugins> </build> </profile> </profiles> </project>