graph-compose-templates
Used in:
components
- OverviewOverview
- VersionsVersions
- DependentsDependents
- DependenciesDependencies
<dependency>
<groupId>io.github.demchaav</groupId>
<artifactId>graph-compose-templates</artifactId>
<version>2.4.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>
<!--
The built-in document templates (CV, cover-letter, invoice, proposal, and
the shared core/identity/text/theme/widget helpers), split out of the engine
in the 2.0 module line. They are pure authoring code over the canonical DSL —
no engine internals, no PDFBox — so this module depends only on
graph-compose-core. Consumers that want the ready-made presets add this one
artifact; a lean core carries none of it.
Standalone pom (no aggregator parent, like fonts/render-pdf); its version
tracks the engine line in lockstep (bumped by cut-release.ps1).
-->
<groupId>io.github.demchaav</groupId>
<artifactId>graph-compose-templates</artifactId>
<version>2.4.0</version>
<name>GraphCompose Templates</name>
<description>Built-in CV, cover-letter, invoice, and proposal document templates for GraphCompose.</description>
<url>https://github.com/DemchaAV/GraphCompose</url>
<licenses>
<license>
<name>MIT License</name>
<url>https://opensource.org/licenses/MIT</url>
<distribution>repo</distribution>
</license>
</licenses>
<developers>
<developer>
<id>DemchaAV</id>
<name>Artem Demchyshyn</name>
<email>demchishynartem@gmail.com</email>
<url>https://github.com/DemchaAV</url>
<roles>
<role>Lead Developer</role>
<role>Architect</role>
</roles>
<timezone>UTC 0</timezone>
</developer>
</developers>
<scm>
<connection>scm:git:https://github.com/DemchaAV/GraphCompose.git</connection>
<developerConnection>scm:git:ssh://git@github.com/DemchaAV/GraphCompose.git</developerConnection>
<url>https://github.com/DemchaAV/GraphCompose/tree/main</url>
</scm>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.release>17</maven.compiler.release>
<lombok.version>1.18.48</lombok.version>
<junit.bom.version>6.1.3</junit.bom.version>
<assertj.version>3.27.7</assertj.version>
<logback.version>1.6.3</logback.version>
<maven.compiler.plugin.version>3.16.0</maven.compiler.plugin.version>
<maven.jar.plugin.version>3.5.1</maven.jar.plugin.version>
<maven.surefire.plugin.version>3.6.0</maven.surefire.plugin.version>
<!-- Keep in lockstep with the engine pom's jacoco.plugin.version
(VersionConsistencyGuardTest enforces the equality). -->
<jacoco.plugin.version>0.8.15</jacoco.plugin.version>
<maven.source.plugin.version>3.4.0</maven.source.plugin.version>
<maven.javadoc.plugin.version>3.12.0</maven.javadoc.plugin.version>
<maven.gpg.plugin.version>3.2.8</maven.gpg.plugin.version>
<central.publishing.plugin.version>0.11.0</central.publishing.plugin.version>
<!-- See the engine pom: opted in via -Dgpg.skip=false on the publish workflow. -->
<gpg.skip>true</gpg.skip>
<!-- Binary-compatibility baselines for the japicmp profile below: the floor of
the current major and the latest release, each diffed in its own execution
(why both, and what runs while a new major has no release of its own:
docs/api-stability.md, Binary-compatibility enforcement).
cut-release.ps1 -PostReleaseOnly moves the previous pin after each release;
VersionConsistencyGuardTest derives both pins and japicmp.break.binary from
the working version and the CHANGELOG, and holds japicmp.version to the
engine pom's. Both pins name a published release STRICTLY OLDER than the
working version, so an artifact this build produces can never stand in for
a baseline. -->
<japicmp.version>0.26.2</japicmp.version>
<japicmp.baseline.floor>2.0.0</japicmp.baseline.floor>
<japicmp.baseline.previous>2.3.0</japicmp.baseline.previous>
<!-- True while the working major has a published release of its own. False only
during the cycle that opens a major, where the diff against the previous
major is a report: a major is allowed to break. -->
<japicmp.break.binary>true</japicmp.break.binary>
</properties>
<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>io.github.demchaav</groupId>
<artifactId>graph-compose-core</artifactId>
<version>${project.version}</version>
</dependency>
<!-- Test dependencies. The template tests here are data/structure tests over
the canonical DSL; the render-heavy visual-parity + smoke suites live in
graph-compose-qa (they need a render backend). -->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>${junit.bom.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId>
<version>${assertj.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>${logback.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>${maven.compiler.plugin.version}</version>
<configuration>
<release>${maven.compiler.release}</release>
<annotationProcessorPaths>
<path>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
</path>
</annotationProcessorPaths>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>${maven.surefire.plugin.version}</version>
</plugin>
<!--
Coverage agent (prepare-agent only — no <argLine> here, so surefire
picks up the property it writes). This module's exec feeds the
report-aggregate in graph-compose-coverage.
-->
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>${jacoco.plugin.version}</version>
<executions>
<execution>
<id>jacoco-prepare-agent</id>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
</executions>
</plugin>
<!--
Build a tests-classifier jar so graph-compose-qa and the benchmarks
module can reuse the template data fixtures (com.demcha.mock.
{Cv,Invoice,Proposal,WeeklySchedule}DataFixtures), which produce
template data objects and so cannot stay in the core test scope
(core → templates would be a reactor cycle). A local build aid only:
the release profile unbinds it (phase=none) so it is never deployed.
-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>${maven.jar.plugin.version}</version>
<executions>
<execution>
<id>attach-test-jar</id>
<goals>
<goal>test-jar</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<profiles>
<!-- Maven Central release artefacts — mirrors the engine pom's `release`
profile (sources + javadoc + GPG + central-publishing). Standalone by
design, so the configuration is duplicated rather than inherited. -->
<profile>
<id>release</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>${maven.jar.plugin.version}</version>
<executions>
<execution>
<id>attach-test-jar</id>
<phase>none</phase>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>${maven.source.plugin.version}</version>
<executions>
<execution>
<id>attach-sources</id>
<phase>package</phase>
<goals>
<goal>jar-no-fork</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>${maven.javadoc.plugin.version}</version>
<executions>
<execution>
<id>attach-javadocs</id>
<phase>package</phase>
<goals>
<goal>jar</goal>
</goals>
<configuration>
<doclint>none</doclint>
<failOnError>false</failOnError>
<quiet>true</quiet>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<version>${maven.gpg.plugin.version}</version>
<executions>
<execution>
<id>sign-artifacts</id>
<phase>verify</phase>
<goals>
<goal>sign</goal>
</goals>
<configuration>
<skip>${gpg.skip}</skip>
<gpgArguments>
<arg>--pinentry-mode</arg>
<arg>loopback</arg>
</gpgArguments>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.sonatype.central</groupId>
<artifactId>central-publishing-maven-plugin</artifactId>
<version>${central.publishing.plugin.version}</version>
<extensions>true</extensions>
<configuration>
<publishingServerId>central</publishingServerId>
<autoPublish>false</autoPublish>
<waitUntil>validated</waitUntil>
</configuration>
</plugin>
</plugins>
</build>
</profile>
<!--
Binary-compatibility gate for this module. Activated with `-P japicmp`,
the same profile id as the engine pom, so one reactor invocation
(-pl :graph-compose-core,:graph-compose-templates) gates both modules.
Resolves the two published baselines pinned by japicmp.baseline.floor /
japicmp.baseline.previous from Maven Central and diffs the freshly-built
jar against each in its own execution; reports are named after the
execution id, so the two do not overwrite each other. Fails the build on
any binary-incompatible modification to the public surface; source-
incompatible changes are reported but do not fail, the engine's phased
policy. A baseline that cannot be resolved fails the build rather than
skipping its diff. Every templates.* package is Stable per
docs/api-stability.md and none is an @Internal tree, so the only exclusion
is the per-element @Internal marker, as in the engine pom.
-->
<profile>
<id>japicmp</id>
<build>
<plugins>
<plugin>
<groupId>com.github.siom79.japicmp</groupId>
<artifactId>japicmp-maven-plugin</artifactId>
<version>${japicmp.version}</version>
<executions>
<execution>
<id>japicmp-against-major-floor</id>
<phase>verify</phase>
<goals>
<goal>cmp</goal>
</goals>
<configuration>
<oldVersion>
<dependency>
<groupId>io.github.demchaav</groupId>
<artifactId>graph-compose-templates</artifactId>
<version>${japicmp.baseline.floor}</version>
</dependency>
</oldVersion>
</configuration>
</execution>
<execution>
<id>japicmp-against-previous-release</id>
<phase>verify</phase>
<goals>
<goal>cmp</goal>
</goals>
<configuration>
<oldVersion>
<dependency>
<groupId>io.github.demchaav</groupId>
<artifactId>graph-compose-templates</artifactId>
<version>${japicmp.baseline.previous}</version>
</dependency>
</oldVersion>
</configuration>
</execution>
</executions>
<configuration>
<newVersion>
<file>
<path>${project.build.directory}/${project.build.finalName}.jar</path>
</file>
</newVersion>
<parameter>
<onlyModified>true</onlyModified>
<breakBuildOnBinaryIncompatibleModifications>${japicmp.break.binary}</breakBuildOnBinaryIncompatibleModifications>
<breakBuildOnSourceIncompatibleModifications>false</breakBuildOnSourceIncompatibleModifications>
<includeSynthetic>false</includeSynthetic>
<reportOnlyFilename>true</reportOnlyFilename>
<skipPomModules>true</skipPomModules>
<!-- japicmp defaults this to true: a baseline it cannot resolve
is skipped with a warning, and the build passes having
compared nothing. False makes a mistyped or unpublished pin,
or a repository that cannot serve it, fail the build. -->
<ignoreMissingOldVersion>false</ignoreMissingOldVersion>
<excludes>
<exclude>@com.demcha.compose.document.api.Internal</exclude>
</excludes>
</parameter>
</configuration>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>