parent-pom
Used in:
components
- OverviewOverview
- VersionsVersions
- DependentsDependents
- DependenciesDependencies
<dependency> <groupId>com.getconvey</groupId> <artifactId>parent-pom</artifactId> <version>7.0.0</version> </dependency>
<?xml version="1.0" encoding="UTF-8"?> <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> <groupId>com.getconvey</groupId> <artifactId>parent-pom</artifactId> <packaging>pom</packaging> <version>7.0.0</version> <name>Convey Parent POM</name> <description>The Parent POM for all Convey projects.</description> <url>https://github.com/getconvey/parent-pom</url> <licenses> <license> <name>The Apache License, Version 2.0</name> <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url> </license> </licenses> <developers> <developer> <name>Olivier Modica</name> <email>olivier@getconvey.com</email> <organization>Convey</organization> <organizationUrl>https://www.getconvey.com</organizationUrl> </developer> </developers> <properties> <!-- Use UTF-8 encoding. --> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <!-- Enforce Java 12 and declare the maven.compiler.release property which ensures that IntelliJ IDEA sets the source level correctly for the parent POM of multiple-module projects (instead of defaulting to Java 5). --> <maven.compiler.release>12</maven.compiler.release> <maven.compiler.showDeprecation>true</maven.compiler.showDeprecation> <maven.compiler.showWarnings>true</maven.compiler.showWarnings> <!-- There are essentially two type of projects: libraries and services. - Libraries are shared and re-usable JAR-based artifacts which are deployed in a Maven repository and expose their documentation through Javadoc files. - Services are Docker-based REST/JSON services which are deployed in a Docker registry and expose their documentation through routes and other means, but never through Javadoc files. At Convey we are encouraging fewer libraries and more (micro-) services hence we default to skipping both the Maven repository deployment and the Javadoc files generation. Those values should be overridden within the child POMs properties section, or alternatively through -D system property override for ad-hoc needs. --> <maven.deploy.skip>true</maven.deploy.skip> <maven.javadoc.skip>true</maven.javadoc.skip> <maven.source.skip>true</maven.source.skip> <!-- Set this to "true" to redirect the test standard output to a file. This value should be overridden within the Child POM properties section, or alternatively through -D system property override for ad-hoc needs. --> <maven.test.redirectTestOutputToFile>true</maven.test.redirectTestOutputToFile> <!-- Set this to "true" to allow for snapshots dependencies from the S3 bucket. --> <convey.snapshots.enabled>false</convey.snapshots.enabled> <!-- Declare a property so that the "sonatype" profile can be made harmless even though it was mistakenly activated in a Child POM. Set the default to "true" to require it to be set on the command line. --> <convey.sonatype.skip>true</convey.sonatype.skip> </properties> <!-- Publish the JARs to the S3 bucket. --> <distributionManagement> <repository> <id>maven-s3-release-repo</id> <name>S3 Release Repository</name> <url>s3://artifacts.getconvey.com/maven/releases</url> </repository> <snapshotRepository> <id>maven-s3-snapshot-repo</id> <name>S3 Snapshot Repository</name> <url>s3://artifacts.getconvey.com/maven/snapshots</url> </snapshotRepository> </distributionManagement> <!-- Read the JARs from the S3 bucket. Declare the Maven Central Repository at the top to ensure that the build tries it first. --> <repositories> <repository> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>false</enabled> </snapshots> <id>central</id> <name>Central Repository</name> <url>https://repo.maven.apache.org/maven2</url> </repository> <repository> <id>maven-s3-release-repo</id> <name>S3 Release Repository</name> <url>s3://artifacts.getconvey.com/maven/releases</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>false</enabled> </snapshots> </repository> <repository> <id>maven-s3-snapshot-repo</id> <name>S3 Release Repository</name> <url>s3://artifacts.getconvey.com/maven/snapshots</url> <releases> <enabled>false</enabled> </releases> <snapshots> <enabled>${convey.snapshots.enabled}</enabled> </snapshots> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>central</id> <name>Central Repository</name> <url>http://repo.maven.apache.org/maven2</url> <layout>default</layout> <snapshots> <enabled>false</enabled> </snapshots> <releases> <updatePolicy>never</updatePolicy> </releases> </pluginRepository> <pluginRepository> <id>maven-s3-release-repo</id> <name>S3 Release Repository</name> <url>s3://artifacts.getconvey.com/maven/releases</url> </pluginRepository> </pluginRepositories> <build> <!-- The plugins within the "build/pluginManagement" element take effect for all child POMs of this one, however the plugins still need to be activated within the "build/plugins" element. --> <pluginManagement> <plugins> <!-- Enforce the minimum Java version. --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> <configuration> <release>${maven.compiler.release}</release> <showDeprecation>${maven.compiler.showDeprecation}</showDeprecation> <showWarnings>${maven.compiler.showWarnings}</showWarnings> </configuration> </plugin> <!-- Expose the skip property value. --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-deploy-plugin</artifactId> <version>3.0.0-M1</version> <configuration> <skip>${maven.deploy.skip}</skip> </configuration> </plugin> <!-- Do not worry about Javadoc problems, which will cause actual errors on Java 8+; and expose the skip property value. --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-javadoc-plugin</artifactId> <version>3.1.0</version> <configuration> <doclint>none</doclint> <failOnError>false</failOnError> <skip>${maven.javadoc.skip}</skip> </configuration> </plugin> <!-- Do not generate a source JAR. --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> <version>3.1.0</version> <configuration> <skipSource>${maven.source.skip}</skipSource> </configuration> </plugin> <!-- Provide the version for the following plugins and the configuration if appropriate. --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>3.2.1</version> <configuration> <createDependencyReducedPom>false</createDependencyReducedPom> <filters> <filter> <artifact>*:*</artifact> <excludes> <exclude>META-INF/*.SF</exclude> <exclude>META-INF/*.DSA</exclude> <exclude>META-INF/*.RSA</exclude> </excludes> </filter> </filters> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-assembly-plugin</artifactId> <version>3.1.1</version> </plugin> <!-- Use a recent version of the release plugin to avoid bugs with uploading to S3. Release tags should be v<VERSION>. --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-release-plugin</artifactId> <version>2.5.3</version> <configuration> <autoVersionSubmodules>true</autoVersionSubmodules> <tagNameFormat>v@{project.version}</tagNameFormat> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>3.0.0-M3</version> <configuration> <redirectTestOutputToFile>${maven.test.redirectTestOutputToFile}</redirectTestOutputToFile> </configuration> <dependencies> <dependency> <groupId>org.apache.maven.surefire</groupId> <artifactId>surefire-junit47</artifactId> <version>3.0.0-M3</version> </dependency> </dependencies> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-failsafe-plugin</artifactId> <version>3.0.0-M3</version> <configuration> <redirectTestOutputToFile>${maven.test.redirectTestOutputToFile}</redirectTestOutputToFile> </configuration> <executions> <execution> <id>integration-test</id> <goals> <goal>integration-test</goal> </goals> </execution> <execution> <id>verify</id> <goals> <goal>verify</goal> </goals> </execution> </executions> </plugin> <!-- Enforce common exclusions and the minimum Maven version. --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-enforcer-plugin</artifactId> <version>3.0.0-M2</version> <executions> <execution> <id>enforce-banned-dependencies</id> <goals> <goal>enforce</goal> </goals> <configuration> <rules> <bannedDependencies> <excludes> <exclude>commons-logging:commons-logging</exclude> </excludes> </bannedDependencies> </rules> </configuration> </execution> <execution> <id>enforce-versions</id> <phase>initialize</phase> <goals> <goal>enforce</goal> </goals> <configuration> <rules> <requireMavenVersion> <version>3.0</version> </requireMavenVersion> </rules> </configuration> </execution> </executions> </plugin> </plugins> </pluginManagement> <!-- The plugins within the "build/plugins" element only take effect for this POM. --> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-release-plugin</artifactId> <configuration> <!-- Because release:perform will fork a new Maven instance to build the checked-out project make sure the provided property value is passed to the forked instance so that the deploy is not skipped. --> <arguments>-Dconvey.sonatype.skip=${convey.sonatype.skip}</arguments> </configuration> </plugin> </plugins> <extensions> <!-- Publish everything to S3 instead of a Maven repo. --> <extension> <groupId>com.getconvey.oss</groupId> <artifactId>aws-maven</artifactId> <version>5.0.0.RELEASE.MSH.1.CONVEY.2</version> </extension> </extensions> </build> <profiles> <profile> <id>sonatype</id> <build> <plugins> <!-- Publish artifacts to the Maven Central Repository instead of S3. Per the instructions in the README file we require the user to log into Sonatype account to release the POM as a final validation step, hence we explicitly set the "autoReleaseAfterClose" property to "false". This plugin will be not be activated in a Child POM, and even this profile were mistakenly activated it would be harmless due to the "skipNexusStagingDeployMojo" property being set to "true". --> <plugin> <groupId>org.sonatype.plugins</groupId> <artifactId>nexus-staging-maven-plugin</artifactId> <version>1.6.8</version> <extensions>true</extensions> <configuration> <serverId>oss.sonatype.org</serverId> <nexusUrl>https://oss.sonatype.org/</nexusUrl> <autoReleaseAfterClose>false</autoReleaseAfterClose> <skipNexusStagingDeployMojo>${convey.sonatype.skip}</skipNexusStagingDeployMojo> </configuration> </plugin> <!-- Sign artifacts with GPG, which is required to publish to the Maven Central Repository. This plugin will be not be activated in a Child POM, and even this profile were mistakenly activated it would be harmless due to the "skip" property being set to "true". --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-gpg-plugin</artifactId> <version>1.6</version> <configuration> <skip>${convey.sonatype.skip}</skip> </configuration> <executions> <execution> <id>sign-artifacts</id> <phase>verify</phase> <goals> <goal>sign</goal> </goals> </execution> </executions> </plugin> </plugins> </build> </profile> </profiles> <scm> <url>https://github.com/getconvey/parent-pom</url> <connection>scm:git:git@github.com:getconvey/parent-pom.git</connection> <developerConnection>scm:git:git@github.com:getconvey/parent-pom.git</developerConnection> <tag>v7.0.0</tag> </scm> </project>