build-templates
Used in:
components
- OverviewOverview
- VersionsVersions
- DependentsDependents
- DependenciesDependencies
<dependency>
<groupId>org.frankframework</groupId>
<artifactId>build-templates</artifactId>
<version>10.2.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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.frankframework</groupId>
<artifactId>build-templates</artifactId>
<version>10.2.0</version>
<packaging>pom</packaging>
<name>Frank!Framework Build Templates</name>
<description>Module parent to ensure packaging will be done uniformly</description>
<url>https://frankframework.org</url>
<organization>
<name>Frank!Framework</name>
<url>https://frankframework.org</url>
</organization>
<licenses>
<license>
<name>Apache License, Version 2.0</name>
<url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
<distribution>repo</distribution>
</license>
</licenses>
<developers>
<developer>
<name>Niels Meijer</name>
<email>niels@frankframework.org</email>
<organization>Frank!Framework</organization>
<organizationUrl>https://frankframework.org</organizationUrl>
</developer>
</developers>
<modules>
<module>plugin-parent</module>
<module>configuration-parent</module>
</modules>
<scm>
<connection>scm:git:https://github.com/frankframework/frankframework.git</connection>
<developerConnection>scm:git:https://github.com/frankframework/frankframework.git</developerConnection>
<tag>v10.2.0</tag>
<url>https://github.com/frankframework/frankframework</url>
</scm>
<properties>
<maven.compiler.target>21</maven.compiler.target>
<maven.compiler.source>21</maven.compiler.source>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.build.timestamp.format>yyyy-MM-dd HH:mm</maven.build.timestamp.format>
<revision>10.2.0</revision>
<framework.version>${project.version}</framework.version>
<framework.version.range>[${framework.version},)</framework.version.range>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.build.timestamp.format>yyyy-MM-dd HH:mm</maven.build.timestamp.format>
<!-- Override below properties in each plugin's pom.xml -->
<plugin.type />
<plugin.class />
<plugin.dependencies />
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.frankframework</groupId>
<artifactId>frankframework-parent</artifactId>
<version>${framework.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.frankframework</groupId>
<artifactId>plugin-parent</artifactId>
<version>10.2.0</version>
</dependency>
<dependency>
<groupId>org.frankframework</groupId>
<artifactId>configuration-parent</artifactId>
<version>10.2.0</version>
</dependency>
<dependency>
<groupId>org.pf4j</groupId>
<artifactId>pf4j</artifactId>
<version>3.15.0</version>
<scope>provided</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<defaultGoal>package</defaultGoal>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.15.0</version>
<configuration>
<source>${maven.compiler.source}</source>
<target>${maven.compiler.target}</target>
<compilerArgs>
<arg>-parameters</arg>
<arg>-proc:full</arg>
</compilerArgs>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>3.5.0</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.5.0</version>
<configuration>
<archive>
<addMavenDescriptor>true</addMavenDescriptor>
<manifest>
<addClasspath>true</addClasspath>
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
<addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
<useUniqueVersions>true</useUniqueVersions>
</manifest>
<manifestEntries>
<Description>${project.description}</Description>
<Build-Timestamp>${maven.build.timestamp}</Build-Timestamp>
<Group-Id>${project.groupId}</Group-Id>
<Artifact-Id>${project.artifactId}</Artifact-Id>
<FrankFramework-Version>${framework.version.range}</FrankFramework-Version>
<Project-URL>${project.url}</Project-URL>
<Sealed>true</Sealed>
<Classifier>${plugin.type}</Classifier>
<Plugin-Class>${plugin.class}</Plugin-Class>
<Plugin-Dependencies>${plugin.dependencies}</Plugin-Dependencies>
</manifestEntries>
</archive>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>3.4.0</version>
<executions>
<execution>
<id>attach-sources</id>
<goals>
<goal>jar-no-fork</goal>
</goals>
<phase>prepare-package</phase>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<version>3.6.3</version>
<dependencies>
<dependency>
<groupId>org.codehaus.mojo</groupId>
<artifactId>extra-enforcer-rules</artifactId>
<version>1.12.0</version>
</dependency>
</dependencies>
<executions>
<execution>
<id>no-framework-dependencies-in-release</id>
<goals>
<goal>enforce</goal>
</goals>
<phase>validate</phase>
<configuration>
<rules>
<bannedDependencies>
<excludes>
<exclude>org.frankframework:*:*:*:compile</exclude>
<exclude>org.frankframework:*:*:*:runtime</exclude>
</excludes>
<message>Frank!Framework dependencies should not be included, please set the scope to PROVIDED</message>
</bannedDependencies>
</rules>
</configuration>
</execution>
<execution>
<id>ensure-correct-versions</id>
<goals>
<goal>enforce</goal>
</goals>
<phase>validate</phase>
<configuration>
<rules>
<requireMavenVersion>
<version>[3.9.6,)</version>
<message>3.9.6 to use Maven plugins using JDK17 bytecode.</message>
</requireMavenVersion>
<requireJavaVersion>
<version>[${maven.compiler.target},)</version>
</requireJavaVersion>
<enforceBytecodeVersion>
<maxJdkVersion>${maven.compiler.target}</maxJdkVersion>
<ignoredScopes>
<ignoredScope>test</ignoredScope>
</ignoredScopes>
</enforceBytecodeVersion>
<requireUpperBoundDeps>
<excludes>
<exclude>com.google.code.findbugs:jsr305</exclude>
</excludes>
</requireUpperBoundDeps>
</rules>
</configuration>
</execution>
<execution>
<id>no-snapshots-in-release</id>
<goals>
<goal>enforce</goal>
</goals>
<phase>validate</phase>
<configuration>
<rules>
<requireReleaseDeps>
<message>No SNAPSHOT versions are allowed for releases</message>
<onlyWhenRelease>true</onlyWhenRelease>
<failWhenParentIsSnapshot>false</failWhenParentIsSnapshot>
</requireReleaseDeps>
</rules>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.8.0</version>
<configuration>
<!-- This produces an error but it still works, see https://github.com/apache/maven-assembly-plugin/issues/1032 -->
<finalName>${project.artifactId}-${project.version}-${plugin.type}</finalName>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<appendAssemblyId>false</appendAssemblyId>
<attach>true</attach>
<archive>
<addMavenDescriptor>true</addMavenDescriptor>
<manifest>
<addClasspath>true</addClasspath>
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
<addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
<useUniqueVersions>true</useUniqueVersions>
</manifest>
<manifestEntries>
<Description>${project.description}</Description>
<Build-Timestamp>${maven.build.timestamp}</Build-Timestamp>
<Group-Id>${project.groupId}</Group-Id>
<Artifact-Id>${project.artifactId}</Artifact-Id>
<FrankFramework-Version>${framework.version.range}</FrankFramework-Version>
<Project-URL>${project.url}</Project-URL>
<Sealed>true</Sealed>
<Classifier>${plugin.type}</Classifier>
<Plugin-Class>${plugin.class}</Plugin-Class>
<Plugin-Dependencies>${plugin.dependencies}</Plugin-Dependencies>
</manifestEntries>
</archive>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<goals>
<goal>single</goal>
</goals>
<phase>package</phase>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.6.2</version>
<configuration>
<createDependencyReducedPom>false</createDependencyReducedPom>
<minimizeJar>true</minimizeJar>
<promoteTransitiveDependencies>true</promoteTransitiveDependencies>
<shadedArtifactAttached>true</shadedArtifactAttached>
<shadedClassifierName>${plugin.type}</shadedClassifierName>
<filters>
<filter>
<artifact>*:*</artifact>
<includes>
<include>**</include>
</includes>
<excludes>
<exclude>**/module-info.class</exclude>
</excludes>
</filter>
</filters>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ApacheLicenseResourceTransformer" />
<transformer implementation="org.apache.maven.plugins.shade.resource.ApacheNoticeResourceTransformer" />
<transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer" />
</transformers>
</configuration>
<executions>
<execution>
<goals>
<goal>shade</goal>
</goals>
<phase>package</phase>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>flatten-maven-plugin</artifactId>
<version>1.7.3</version>
<configuration>
<updatePomFile>true</updatePomFile>
<flattenMode>resolveCiFriendliesOnly</flattenMode>
</configuration>
<executions>
<execution>
<id>flatten</id>
<goals>
<goal>flatten</goal>
</goals>
<phase>initialize</phase>
</execution>
<execution>
<id>clean</id>
<goals>
<goal>clean</goal>
</goals>
<phase>clean</phase>
</execution>
</executions>
</plugin>
<plugin>
<groupId>com.diffplug.spotless</groupId>
<artifactId>spotless-maven-plugin</artifactId>
<version>3.8.0</version>
<configuration>
<java>
<removeUnusedImports />
<endWithNewline />
<trimTrailingWhitespace />
</java>
<pom>
<sortPom>
<expandEmptyElements>false</expandEmptyElements>
<sortDependencies>scope</sortDependencies>
<sortDependencyExclusions>groupId,artifactId</sortDependencyExclusions>
<spaceBeforeCloseEmptyElement>true</spaceBeforeCloseEmptyElement>
<nrOfIndentSpace>-1</nrOfIndentSpace>
</sortPom>
</pom>
</configuration>
<executions>
<execution>
<id>check</id>
<goals>
<goal>check</goal>
</goals>
</execution>
<execution>
<id>auto-apply</id>
<goals>
<goal>apply</goal>
</goals>
<phase>compile</phase>
</execution>
</executions>
</plugin>
<!-- This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself -->
<plugin>
<groupId>org.eclipse.m2e</groupId>
<artifactId>lifecycle-mapping</artifactId>
<version>1.0.0</version>
<configuration>
<lifecycleMappingMetadata>
<pluginExecutions>
<pluginExecution>
<pluginExecutionFilter>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<versionRange>[3.1.2,)</versionRange>
<goals>
<goal>check</goal>
</goals>
</pluginExecutionFilter>
<action>
<ignore />
</action>
</pluginExecution>
<pluginExecution>
<pluginExecutionFilter>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<versionRange>[3.2.1,)</versionRange>
<goals>
<goal>enforce</goal>
</goals>
</pluginExecutionFilter>
<action>
<ignore />
</action>
</pluginExecution>
<pluginExecution>
<pluginExecutionFilter>
<groupId>com.diffplug.spotless</groupId>
<artifactId>spotless-maven-plugin</artifactId>
<versionRange>[2.46.1,)</versionRange>
<goals>
<goal>check</goal>
<goal>apply</goal>
</goals>
</pluginExecutionFilter>
<action>
<ignore />
</action>
</pluginExecution>
</pluginExecutions>
</lifecycleMappingMetadata>
</configuration>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>flatten-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>com.diffplug.spotless</groupId>
<artifactId>spotless-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
<profiles>
<profile>
<id>ossrh</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<version>3.2.8</version>
<configuration>
<passphrase>${gpg.passphrase}</passphrase>
<gpgArguments>
<!-- This is necessary for gpg to not try to use the pinentry programs -->
<arg>--batch</arg>
<arg>--no-tty</arg>
<arg>--pinentry-mode</arg>
<arg>loopback</arg>
</gpgArguments>
</configuration>
<executions>
<execution>
<id>sign-artifacts</id>
<goals>
<goal>sign</goal>
</goals>
<phase>verify</phase>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.sonatype.central</groupId>
<artifactId>central-publishing-maven-plugin</artifactId>
<version>0.11.0</version>
<extensions>true</extensions>
<configuration>
<!-- Don't release the build directly after it's been published to Central (staging). -->
<autoPublish>false</autoPublish>
<!-- Central OSS Server -->
<publishingServerId>ossrh</publishingServerId>
<!-- Wait until the deployment bundle has been uploaded and validated. -->
<waitUntil>validated</waitUntil>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<skipAssembly>true</skipAssembly>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>ibissource</id>
<distributionManagement>
<repository>
<id>frankframework</id>
<url>https://nexus.frankframework.org/content/repositories/releases</url>
</repository>
<snapshotRepository>
<id>frankframework</id>
<url>https://nexus.frankframework.org/content/repositories/snapshots</url>
</snapshotRepository>
<site>
<id>www.ibissource.org</id>
<url>file:target/site-deploy</url>
</site>
</distributionManagement>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<skipAssembly>true</skipAssembly>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>