cffu-parent
Used in:
components
- OverviewOverview
- VersionsVersions
- DependentsDependents
- DependenciesDependencies
<dependency> <groupId>io.foldright</groupId> <artifactId>cffu-parent</artifactId> <version>1.1.3</version> </dependency>
<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>io.foldright</groupId> <artifactId>cffu-parent</artifactId> <version>1.1.3</version> <packaging>pom</packaging> <name>${project.artifactId}</name> <description>cffu parent</description> <url>https://github.com/foldright/cffu</url> <inceptionYear>2023</inceptionYear> <licenses> <license> <name>Apache 2</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> <connection>scm:git:git@github.com:foldright/cffu.git</connection> <developerConnection>scm:git:git@github.com:foldright/cffu.git</developerConnection> <url>https://github.com/foldright/cffu</url> </scm> <issueManagement> <system>GitHub Issues</system> <url>https://github.com/foldright/cffu/issues</url> </issueManagement> <ciManagement> <system>GitHub Actions</system> <url>https://github.com/foldright/cffu/actions</url> </ciManagement> <organization> <name>FoldRight</name> <url>https://foldright.io</url> </organization> <developers> <developer> <name>Jerry Lee</name> <id>oldratlee</id> <email>oldratlee(AT)gmail(DOT)com</email> <roles> <role>Developer</role> </roles> <timezone>+8</timezone> <url>https://github.com/oldratlee</url> <organization>FoldRight</organization> <organizationUrl>https://foldright.io</organizationUrl> </developer> </developers> <modules> <!-- cffu modules --> <module>cffu-core</module> <module>cffu-kotlin</module> <module>cffu-bom</module> <!-- cffu SPI extension implementation modules --> <module>cffu-ttl-executor-wrapper</module> <module>cffu-listenable-future</module> </modules> <properties> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>${maven.compiler.source}</maven.compiler.target> <!-- A Guide to Maven Encoding https://www.baeldung.com/maven-encoding --> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>${project.build.sourceEncoding}</project.reporting.outputEncoding> <maven.deploy.skip>false</maven.deploy.skip> <dokka.skip>false</dokka.skip> <!-- dummy default value, overridden by profile --> <main.run.debug.java.opt>-ea</main.run.debug.java.opt> <!-- need argLine to use `@{argLine}`(e.g. `maven-surefire-plugin`) --> <argLine/> <!-- pom version regex pattern --> <snapshot.pom.version.regex>^(\d\.\d+\.\d+|\d\.x)-SNAPSHOT$</snapshot.pom.version.regex> <alpha.release.pom.version.regex>^\d\.\d+\.\d+-Alpha\d*$</alpha.release.pom.version.regex> <ga.release.pom.version.regex>^\d\.\d+\.\d+(-(Alpha|Beta|RC)\d+)?$</ga.release.pom.version.regex> <release.pom.version.regex>${ga.release.pom.version.regex}</release.pom.version.regex> <maven.enforcer.pom.version.regex>${snapshot.pom.version.regex}</maven.enforcer.pom.version.regex> <spotbugs.annotations.version>4.8.6</spotbugs.annotations.version> <jsr305.version>3.0.2</jsr305.version> <jetbrains.annotations.version>26.0.2</jetbrains.annotations.version> <kotlin.version>2.1.20</kotlin.version> <kotlin.compiler.jvmTarget>${maven.compiler.source}</kotlin.compiler.jvmTarget> <!-- https://kotlinlang.org/docs/maven.html#specifying-compiler-options --> <kotlin.compiler.apiVersion>1.8</kotlin.compiler.apiVersion> <slf4j.version>2.0.17</slf4j.version> <log4j2.version>2.24.3</log4j2.version> <log4j2.slf4j.impl.aid>log4j-slf4j2-impl</log4j2.slf4j.impl.aid> <guava.version>33.4.8-jre</guava.version> <!-- testing dependencies versions --> <junit5.version>5.12.2</junit5.version> <kotest.version>5.8.1</kotest.version> </properties> <dependencies> <!-- QA libs --> <dependency> <groupId>com.github.spotbugs</groupId> <artifactId>spotbugs-annotations</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>com.google.code.findbugs</groupId> <artifactId>jsr305</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.jetbrains</groupId> <artifactId>annotations</artifactId> <optional>true</optional> </dependency> <!-- testing libs --> <dependency> <groupId>io.kotest</groupId> <artifactId>kotest-runner-junit5-jvm</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>io.kotest</groupId> <artifactId>kotest-assertions-core-jvm</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>io.kotest</groupId> <artifactId>kotest-property-jvm</artifactId> <scope>test</scope> </dependency> <dependency> <!-- In order to run JUnit 5 test cases in IntelliJ IDEA, need include this dependencies. more info see: https://junit.org/junit5/docs/current/user-guide/#running-tests-ide-intellij-idea https://github.com/junit-team/junit5-samples/blob/main/junit5-jupiter-starter-maven/pom.xml#L29 --> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.assertj</groupId> <artifactId>assertj-core</artifactId> <scope>test</scope> </dependency> </dependencies> <dependencyManagement> <dependencies> <!-- bom --> <dependency> <groupId>org.assertj</groupId> <artifactId>assertj-bom</artifactId> <version>3.27.3</version> <type>pom</type> <scope>import</scope> </dependency> <dependency> <groupId>org.junit</groupId> <artifactId>junit-bom</artifactId> <version>${junit5.version}</version> <type>pom</type> <scope>import</scope> </dependency> <dependency> <groupId>org.jetbrains.kotlin</groupId> <artifactId>kotlin-bom</artifactId> <version>${kotlin.version}</version> <type>pom</type> <scope>import</scope> </dependency> <!-- QA libs make qa libs optional, smaller deployment --> <dependency> <!-- https://spotbugs.readthedocs.io/en/stable/migration.html --> <groupId>com.github.spotbugs</groupId> <artifactId>spotbugs-annotations</artifactId> <version>${spotbugs.annotations.version}</version> <optional>true</optional> </dependency> <dependency> <groupId>com.google.code.findbugs</groupId> <artifactId>jsr305</artifactId> <version>${jsr305.version}</version> <optional>true</optional> </dependency> <dependency> <!-- https://www.jetbrains.com/help/idea/annotating-source-code.html --> <groupId>org.jetbrains</groupId> <artifactId>annotations</artifactId> <version>${jetbrains.annotations.version}</version> <optional>true</optional> </dependency> <!-- implementation dependencies --> <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>${guava.version}</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>transmittable-thread-local</artifactId> <version>2.14.5</version> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.17.0</version> </dependency> <!-- logging libs --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>${slf4j.version}</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-simple</artifactId> <version>${slf4j.version}</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-bom</artifactId> <version>${log4j2.version}</version> <type>pom</type> <scope>import</scope> </dependency> <!-- testing libs --> <!-- https://github.com/kotlintest/kotlintest --> <dependency> <groupId>io.kotest</groupId> <artifactId>kotest-runner-junit5-jvm</artifactId> <version>${kotest.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>io.kotest</groupId> <artifactId>kotest-assertions-core-jvm</artifactId> <version>${kotest.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>io.kotest</groupId> <artifactId>kotest-property-jvm</artifactId> <version>${kotest.version}</version> <scope>test</scope> </dependency> </dependencies> </dependencyManagement> <build> <plugins> <plugin> <!-- Compiling Kotlin and Java sources - Using Maven - Kotlin Programming Language https://kotlinlang.org/docs/maven.html#compile-kotlin-and-java-sources Making sure that the kotlin plugin is above the maven-compiler-plugin in your pom.xml file! --> <groupId>org.jetbrains.kotlin</groupId> <artifactId>kotlin-maven-plugin</artifactId> <executions> <execution> <id>compile</id> <goals> <goal>compile</goal> </goals> </execution> <execution> <id>test-compile</id> <goals> <goal>test-compile</goal> </goals> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <compilerArgs>-Xlint:unchecked</compilerArgs> </configuration> <executions> <!-- Replacing default-compile as it is treated specially by Maven --> <execution> <id>default-compile</id> <phase>none</phase> </execution> <!-- Replacing default-testCompile as it is treated specially by Maven --> <execution> <id>default-testCompile</id> <phase>none</phase> </execution> <execution> <id>java-compile</id> <phase>compile</phase> <goals> <goal>compile</goal> </goals> </execution> <execution> <id>java-test-compile</id> <phase>test-compile</phase> <goals> <goal>testCompile</goal> </goals> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-enforcer-plugin</artifactId> <executions> <execution> <id>enforces</id> <goals> <goal>enforce</goal> </goals> <configuration> <rules> <!-- add maven-enforcer-plugin to make sure the right jdk is used https://stackoverflow.com/a/18420462/922688 --> <requireJavaVersion> <version>19</version> </requireJavaVersion> <!-- official docs: https://maven.apache.org/enforcer/enforcer-rules/requireMavenVersion.html --> <requireMavenVersion> <version>3.3.9</version> </requireMavenVersion> <!-- https://maven.apache.org/enforcer/enforcer-rules/requireProperty.html --> <requireProperty> <property>project.version</property> <regex>${maven.enforcer.pom.version.regex}</regex> <regexMessage>Project version(${project.version}) format is invalid! validation regex pattern: ${maven.enforcer.pom.version.regex}</regexMessage> </requireProperty> </rules> </configuration> </execution> </executions> </plugin> <plugin> <!-- https://github.com/moditect/moditect --> <groupId>org.moditect</groupId> <artifactId>moditect-maven-plugin</artifactId> <executions> <execution> <id>add-module-infos</id> <phase>package</phase> <goals> <goal>add-module-info</goal> </goals> <configuration> <jvmVersion>9</jvmVersion> <overwriteExistingFiles>true</overwriteExistingFiles> <module> <!-- using `moduleInfoFile` is more IDE/editor friendly than `moduleInfoSource`/`moduleInfo` --> <moduleInfoFile>${project.basedir}/src/main/moditect/module-info.java</moduleInfoFile> </module> </configuration> </execution> </executions> </plugin> </plugins> <pluginManagement> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-clean-plugin</artifactId> <version>3.4.1</version> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-resources-plugin</artifactId> <version>3.3.1</version> </plugin> <plugin> <groupId>org.jetbrains.kotlin</groupId> <artifactId>kotlin-maven-plugin</artifactId> <version>${kotlin.version}</version> <configuration> <args> <arg>-Werror</arg> <arg>-Xjvm-default=all</arg> <arg>-Xjsr305=warn</arg> </args> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.14.0</version> <configuration> <!-- https://maven.apache.org/plugins/maven-compiler-plugin/compile-mojo.html#compilerArgs --> <compilerArgs> <arg>-Xlint:unchecked</arg> <arg>-J-Duser.language=en_us</arg> </compilerArgs> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>3.5.3</version> <configuration> <argLine>@{argLine} -ea</argLine> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>3.4.2</version> </plugin> <plugin> <!-- https://github.com/moditect/moditect --> <groupId>org.moditect</groupId> <artifactId>moditect-maven-plugin</artifactId> <version>1.2.2.Final</version> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>3.6.0</version> <configuration> <shadeSourcesContent>true</shadeSourcesContent> <dependencyReducedPomLocation> ${project.build.directory}/dependency-reduced-pom.xml </dependencyReducedPomLocation> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> <version>3.3.1</version> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-javadoc-plugin</artifactId> <version>3.11.2</version> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-gpg-plugin</artifactId> <version>3.2.7</version> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-site-plugin</artifactId> <version>3.21.0</version> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-install-plugin</artifactId> <version>3.1.4</version> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-deploy-plugin</artifactId> <version>3.1.4</version> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-enforcer-plugin</artifactId> <version>3.5.0</version> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <version>3.8.1</version> </plugin> <plugin> <groupId>io.github.git-commit-id</groupId> <artifactId>git-commit-id-maven-plugin</artifactId> <version>9.0.1</version> </plugin> <plugin> <groupId>com.github.spotbugs</groupId> <artifactId>spotbugs-maven-plugin</artifactId> <version>4.9.3.0</version> </plugin> <plugin> <groupId>org.jacoco</groupId> <artifactId>jacoco-maven-plugin</artifactId> <version>0.8.13</version> </plugin> <plugin> <!-- https://www.mojohaus.org/exec-maven-plugin/ https://www.mojohaus.org/exec-maven-plugin/exec-mojo.html --> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <version>3.5.0</version> <configuration> <executable>${java.home}/bin/java</executable> <classpathScope>test</classpathScope> <arguments> <argument>-Xmx256m</argument> <argument>-Xms256m</argument> <argument>-ea</argument> <argument>-Duser.language=en</argument> <argument>-Duser.country=US</argument> <argument>-Dfile.encoding=UTF-8</argument> <argument>${main.run.debug.java.opt}</argument> <argument>-classpath</argument> <classpath/> <argument>${exec.mainClass}</argument> </arguments> </configuration> </plugin> </plugins> </pluginManagement> </build> <profiles> <profile> <id>default-logging-dependencies</id> <activation> <property> <name>switchToLog4j2LoggingDependencies</name> <value>!true</value> </property> </activation> <dependencies> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-simple</artifactId> <scope>test</scope> </dependency> </dependencies> </profile> <profile> <id>switch-to-log4j2-logging-dependencies</id> <activation> <property> <name>switchToLog4j2LoggingDependencies</name> <value>true</value> </property> </activation> <dependencies> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>${log4j2.slf4j.impl.aid}</artifactId> <scope>test</scope> </dependency> </dependencies> </profile> <profile> <id>switch-slf4j-to-v1</id> <properties> <slf4j.version>1.7.0</slf4j.version> <log4j2.slf4j.impl.aid>log4j-slf4j-impl</log4j2.slf4j.impl.aid> </properties> </profile> <profile> <id>default-arch-unit-test</id> <activation> <property> <name>skipDefaultProfileArchUnitTest</name> <value>!true</value> </property> </activation> <dependencies> <!-- https://www.archunit.org/ --> <dependency> <groupId>com.tngtech.archunit</groupId> <artifactId>archunit-junit5</artifactId> <version>1.4.0</version> <scope>test</scope> <exclusions> <exclusion> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> </exclusion> </exclusions> </dependency> </dependencies> <build> <plugins> <plugin> <!-- Add more source directories to your project https://www.mojohaus.org/build-helper-maven-plugin/usage.html --> <groupId>org.codehaus.mojo</groupId> <artifactId>build-helper-maven-plugin</artifactId> <version>3.6.0</version> <executions> <execution> <id>add-test-source</id> <phase>generate-test-sources</phase> <goals> <goal>add-test-source</goal> </goals> <configuration> <sources> <source>${project.basedir}/src/test/archunit</source> </sources> </configuration> </execution> </executions> </plugin> </plugins> </build> </profile> <profile> <id>enable-test-jar-if-not-maven-skip-test</id> <activation> <property> <name>maven.test.skip</name> <value>!true</value> </property> </activation> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <executions> <execution> <goals> <!-- Guide to using attached tests reuse the tests that you have created for one project in another https://maven.apache.org/guides/mini/guide-attached-tests.html How to create a jar containing test classes https://maven.apache.org/plugins/maven-jar-plugin/examples/create-test-jar.html --> <goal>test-jar</goal> </goals> </execution> </executions> </plugin> </plugins> </build> </profile> <profile> <id>disable-javac-options-warning-for-java21+</id> <activation> <jdk>[21,)</jdk> </activation> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <compilerArgs> <arg>-Xlint:-options</arg> </compilerArgs> </configuration> </plugin> </plugins> </build> </profile> <profile> <id>enable-java-main-run-debug</id> <properties> <main.run.debug.java.opt> -agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005 </main.run.debug.java.opt> </properties> </profile> <profile> <id>enforce-when-release</id> <activation> <property> <name>performRelease</name> <value>true</value> </property> </activation> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-enforcer-plugin</artifactId> <executions> <execution> <id>enforces</id> <configuration> <rules> <requireJavaVersion> <version>21</version> </requireJavaVersion> <enforceBytecodeVersion> <!-- https://www.mojohaus.org/extra-enforcer-rules/enforceBytecodeVersion.html --> <maxJdkVersion>${maven.compiler.source}</maxJdkVersion> <excludes> <exclude>com.tngtech.archunit:archunit</exclude> </excludes> </enforceBytecodeVersion> </rules> </configuration> </execution> </executions> <dependencies> <dependency> <groupId>org.codehaus.mojo</groupId> <artifactId>extra-enforcer-rules</artifactId> <version>1.7.0</version> </dependency> </dependencies> </plugin> </plugins> </build> </profile> <profile> <id>enforce-project-version-when-release</id> <activation> <property> <name>performRelease</name> <value>true</value> </property> </activation> <properties> <maven.enforcer.pom.version.regex>${release.pom.version.regex}</maven.enforcer.pom.version.regex> </properties> </profile> <profile> <id>enforce-project-version-when-github-actions-triggered-by-tag</id> <activation> <property> <!-- https://docs.github.com/en/actions/learn-github-actions/variables#default-environment-variables --> <name>env.GITHUB_REF_TYPE</name> <value>tag</value> </property> </activation> <properties> <maven.enforcer.pom.version.regex>${release.pom.version.regex}</maven.enforcer.pom.version.regex> </properties> </profile> <profile> <id>gen-src</id> <activation> <property> <name>performRelease</name> <value>true</value> </property> </activation> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> </plugin> </plugins> </build> </profile> <profile> <id>gen-api-doc</id> <activation> <property> <name>performRelease</name> <value>true</value> </property> </activation> <properties> <javadoc.default.exclude.packages> *.internal:*.internal.*:*.internal.*.*:*.internal.*.*.*:*.internal.*.*.*.* </javadoc.default.exclude.packages> <!-- Apache Maven Javadoc Plugin – Configuring links and offlineLinks Parameters https://maven.apache.org/plugins/maven-javadoc-plugin/examples/links-configuration.html more infos about link setting: Links to JSR 305 in Javadoc are broken https://github.com/google/guava/issues/2479 Fix links to javadoc.io for Maven Javadoc Plugin #2628 https://github.com/google/guava/pull/2628 Can't link to JDK10 in Javadoc comments https://stackoverflow.com/questions/49457896 About package-list vs.element-list Can't link to JDK10 in Javadoc comments https://stackoverflow.com/a/49498219/922688 Missing javadoc/package-list for release 5.1 https://github.com/gradle/gradle/issues/8183 https://github.com/gradle/gradle/commit/5e88351dd456a5252d21f3a7ad25bff1b62a2fd2 Using the linkoffline Option https://docs.oracle.com/en/java/javase/11/javadoc/javadoc-command.html#GUID-51213F2C-6E01-4A03-A82A-17428A258A0F --> <javadoc.package.list.dir>${maven.multiModuleProjectDirectory}/src/package-list</javadoc.package.list.dir> <aggregating.javadoc.title>CompletableFuture-Fu(cffu) ${project.version} API</aggregating.javadoc.title> </properties> <build> <plugins> <plugin> <!-- https://maven.apache.org/plugins/maven-javadoc-plugin/javadoc-mojo.html https://docs.oracle.com/en/java/javase/11/javadoc/javadoc-command.html --> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-javadoc-plugin</artifactId> <configuration> <source>8</source> <show>protected</show> <quiet>true</quiet> <!-- How to disable Javadoc warnings in Maven Javadoc Plugin? - Stack Overflow https://stackoverflow.com/questions/39616344 --> <doclint>all,-missing,-reference</doclint> <!-- https://maven.apache.org/plugins/maven-javadoc-plugin/examples/exclude-package-names.html --> <excludePackageNames>${javadoc.default.exclude.packages}</excludePackageNames> <!-- https://maven.apache.org/plugins/maven-javadoc-plugin/javadoc-mojo.html#detectOfflineLinks --> <detectOfflineLinks>false</detectOfflineLinks> <additionalOptions> <!-- Maven javadoc Search redirects to "/undefined/.." url - Stack Overflow https://stackoverflow.com/questions/52326318 --> <additionalOption>-html5</additionalOption> <additionalOption>-linkoffline</additionalOption> <additionalOption> https://www.javadoc.io/doc/com.github.spotbugs/spotbugs-annotations/${spotbugs.annotations.version}/ </additionalOption> <additionalOption>${javadoc.package.list.dir}/spotbugs-annotations/</additionalOption> <additionalOption>-linkoffline</additionalOption> <additionalOption> https://www.javadoc.io/doc/org.jetbrains/annotations/${jetbrains.annotations.version}/ </additionalOption> <additionalOption>${javadoc.package.list.dir}/jetbrains-annotations/</additionalOption> <additionalOption>-linkoffline</additionalOption> <additionalOption> https://www.javadoc.io/doc/com.google.code.findbugs/jsr305/${jsr305.version}/ </additionalOption> <additionalOption>${javadoc.package.list.dir}/jsr305/</additionalOption> <additionalOption>-linkoffline</additionalOption> <additionalOption>https://docs.oracle.com/en/java/javase/21/docs/api/java.base/</additionalOption> <additionalOption>${javadoc.package.list.dir}/java/</additionalOption> <additionalOption>-linkoffline</additionalOption> <additionalOption>https://guava.dev/releases/${guava.version}/api/docs</additionalOption> <additionalOption>${javadoc.package.list.dir}/guava/</additionalOption> </additionalOptions> <additionalJOptions> <additionalJOption>-J-Duser.language=en</additionalJOption> <additionalJOption>-J-Duser.country=US</additionalJOption> </additionalJOptions> </configuration> <executions> <execution> <!-- Aggregating Javadocs For Multi-Projects https://maven.apache.org/plugins/maven-javadoc-plugin/examples/aggregate.html --> <id>aggregate</id> <inherited>false</inherited> <goals> <goal>aggregate</goal> </goals> <!-- https://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html --> <phase>package</phase> <configuration> <!-- https://maven.apache.org/plugins/maven-javadoc-plugin/aggregate-mojo.html#doctitle --> <doctitle>${aggregating.javadoc.title}</doctitle> <windowtitle>${aggregating.javadoc.title}</windowtitle> </configuration> </execution> </executions> </plugin> </plugins> </build> </profile> <profile> <id>gen-sign</id> <activation> <property> <name>performRelease</name> <value>true</value> </property> </activation> <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> </plugin> </plugins> </build> </profile> <profile> <id>lint</id> <activation> <property> <name>performRelease</name> <value>true</value> </property> </activation> <build> <plugins> <plugin> <!-- https://spotbugs.github.io/ https://spotbugs.readthedocs.io/en/latest/introduction.html https://spotbugs.readthedocs.io/en/latest/maven.html https://spotbugs.github.io/spotbugs-maven-plugin/check-mojo.html Binds by default to the lifecycle phase: verify. Spotbugs support @SuppressWarnings https://github.com/spotbugs/spotbugs/issues/737#issuecomment-416118033 Is it possible for spotbugs to skip kotlin files from pure maven configuration? https://stackoverflow.com/questions/55060459 --> <groupId>com.github.spotbugs</groupId> <artifactId>spotbugs-maven-plugin</artifactId> <executions> <execution> <phase>verify</phase> <goals> <goal>check</goal> </goals> </execution> </executions> <configuration> <excludeFilterFile> ${maven.multiModuleProjectDirectory}/src/spotbugs-exclude-filter-file.xml </excludeFilterFile> </configuration> </plugin> </plugins> </build> </profile> <profile> <id>gen-git-properties</id> <activation> <property> <name>performRelease</name> <value>true</value> </property> </activation> <build> <plugins> <!-- Maven plugin which includes build-time git repository information into an POJO / *.properties). Make your apps tell you which version exactly they were built from! Priceless in large distributed deployments. https://github.com/git-commit-id/git-commit-id-maven-plugin --> <plugin> <groupId>io.github.git-commit-id</groupId> <artifactId>git-commit-id-maven-plugin</artifactId> <executions> <execution> <id>get-the-git-infos</id> <goals> <goal>revision</goal> </goals> </execution> <execution> <id>validate-the-git-infos</id> <goals> <goal>validateRevision</goal> </goals> </execution> </executions> <configuration> <validationProperties> <!-- verify that the current repository is not dirty --> <validationProperty> <name>validating git dirty</name> <value>${git.dirty}</value> <shouldMatchTo>false</shouldMatchTo> </validationProperty> </validationProperties> <generateGitPropertiesFile>true</generateGitPropertiesFile> <generateGitPropertiesFilename> ${project.build.outputDirectory}/META-INF/scm/${project.groupId}/${project.artifactId}/git.properties </generateGitPropertiesFilename> </configuration> </plugin> </plugins> </build> </profile> <profile> <id>gen-code-cov</id> <activation> <property> <!-- https://docs.github.com/en/actions/learn-github-actions/variables#default-environment-variables --> <name>env.CI</name> <value>true</value> </property> </activation> <build> <plugins> <plugin> <!-- for codecov.io config example: https://github.com/codecov/example-java plugin docs: https://eclemma.org/jacoco/trunk/doc/ --> <groupId>org.jacoco</groupId> <artifactId>jacoco-maven-plugin</artifactId> <executions> <execution> <goals> <goal>prepare-agent</goal> </goals> <!-- https://www.eclemma.org/jacoco/trunk/doc/prepare-agent-mojo.html --> <configuration> <append>true</append> </configuration> </execution> <execution> <id>report</id> <phase>test</phase> <goals> <goal>report</goal> </goals> </execution> </executions> </plugin> </plugins> </build> </profile> <profile> <id>deploy-settings</id> <activation> <property> <name>performRelease</name> <value>true</value> </property> </activation> <build> <plugins> <plugin> <!-- https://central.sonatype.org/publish/publish-portal-maven/#publishing --> <groupId>org.sonatype.central</groupId> <artifactId>central-publishing-maven-plugin</artifactId> <version>0.7.0</version> <extensions>true</extensions> <configuration> <publishingServerId>central</publishingServerId> <autoPublish>true</autoPublish> </configuration> </plugin> </plugins> </build> </profile> </profiles> </project>