Foundation Tiles

Foundation tiles provide core functionality and base configurations that other tiles depend upon. These tiles establish fundamental properties, version handling, and integration with Spring Boot applications.

base-service-tile

Provides foundational properties and configurations for Java services in the NGSS ecosystem.

Purpose

Establishes core service properties, Docker repository configuration, and build conventions that are inherited by container and deployment tiles.

Features
  • Docker repository URL configuration (docker.repo.url)

  • Service base path and main class configuration

  • Build timestamp and numbering system

  • Service naming conventions

  • Integration with NGSS container standards

Key Properties
  • docker.repo.url: Registry URL for container images (default: dtr.mapsandbox.net)

  • service.basepath: HTTP context path for the service

  • service.main.class: Main Java class for service startup

  • buildnumber: Build timestamp for image tagging

Usage
  • Used as a dependency by container build tiles (jib-maven-plugin-tile)

  • Provides consistent service configuration across NGSS projects

  • Foundation for Docker and Kubernetes deployment workflows

Dependencies

None (base tile)

parse-version-tile

Handles Maven project version parsing and semantic version component extraction.

Purpose

Parses the Maven project version into semantic components that can be used by other tiles for tagging, naming, and versioning strategies.

Features
  • Semantic version parsing using build-helper-maven-plugin

  • Version component extraction (major, minor, patch)

  • Integration with container image tagging

  • Support for complex version schemes

Key Properties Generated
  • parsedVersion.majorVersion: Major version component

  • parsedVersion.minorVersion: Minor version component

  • parsedVersion.incrementalVersion: Patch version component

  • Additional semantic version properties

Usage
  • Used by container tiles for image tagging (v${parsedVersion.majorVersion})

  • Referenced in service environment variables

  • Supports deployment versioning strategies

Dependencies

None (base tile)

Benefits
  • Consistent version handling across all tiles

  • Enables semantic version-based deployment strategies

  • Simplifies container image tagging

spring-properties-tile

Integrates Spring Boot application properties with the Maven build process.

Purpose

Reads Spring Boot application.properties files and makes key configuration values available as Maven properties for use by other tiles.

Features
  • Properties file parsing and integration

  • Spring Boot configuration bridge

  • Build-time property resolution

  • Service base path extraction

Key Properties Extracted
  • service.basepath: Extracted from server.servlet.context-path in application.properties

  • Additional Spring configuration properties as needed

Usage
  • Used by container tiles to configure service paths

  • Enables consistent configuration between Spring Boot and Maven

  • Supports environment-specific property resolution

Dependencies

None (base tile)

Integration
  • Works seamlessly with Spring Boot applications

  • Provides build-time access to runtime configuration

  • Ensures consistency between application and deployment configuration

Tile Relationships

These foundation tiles work together to provide a consistent base for all other NGSS tiles:

Dependency Chain: - parse-version-tile → Used by container tiles for versioning - spring-properties-tile → Used by container tiles for service configuration - base-service-tile → Used by jib-maven-plugin-tile and deployment tiles

Common Usage Pattern: Most NGSS services will indirectly use these tiles through higher-level tiles like jib-maven-plugin-tile or docker-maven-plugin-tile, which include them as dependencies.