Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
74 changes: 74 additions & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
# multiapps — MTA Model Library

## Project Role

This is the **multiapps** repository (`org.cloudfoundry.multiapps`). It is a shared Java
library providing model objects, YAML parsers, and validators for the SAP Multitarget
Application (MTA) specification. It serves as a foundational dependency for the
Cloud Foundry MultiApps Controller.

## Security Boundary
Comment thread
s-yonkov-yonkov marked this conversation as resolved.

This is an **OPEN SOURCE** repository. Never introduce proprietary logic, credentials,
or internal company context into this codebase.

## Tech Stack

- **Java 25**, compiled with `maven-compiler-plugin` (source/target 25)
- **JUnit 6** (`junit-jupiter` 6.x) + **Mockito** for testing
- **Maven** multi-module build (parent POM: `multiapps-parent`)

## Maven Modules

| Module | Purpose |
|-------------------------|----------------------------------------------------------------|
| `multiapps-common` | Shared utilities: YAML handling (SnakeYAML), JSON (Jackson), XML binding (JAXB), commons |
| `multiapps-common-test` | Shared test utilities and helpers (JUnit/Mockito at compile scope) |
| `multiapps-mta` | MTA model objects, parsers, and validators (depends on `multiapps-common`) |
| `multiapps-coverage` | Aggregates JaCoCo coverage reports across all modules (POM-only) |

## Build Profiles

| Profile | Purpose |
|------------|------------------------------------------------------|
| `coverage` | Enables JaCoCo agent for code coverage collection |
| `sonar` | Runs SonarQube analysis (reports to sonarcloud.io) |
| `release` | Signs artifacts (GPG), attaches sources/javadoc, publishes to Maven Central via Sonatype |

## Build & Test Commands

```bash
# Full build with tests
mvn clean install

# Run tests only
mvn test

# Build, skip tests (for quick local iteration)
mvn clean install -DskipTests

# Build a single module (e.g., multiapps-mta)
mvn clean install -pl multiapps-mta -am

# Build with coverage
mvn clean verify -Pcoverage

# Run SonarQube analysis (requires sonar token)
mvn clean verify -Pcoverage,sonar
```

## Dependency Notes

- Downstream consumers reference this library via the `multiapps.version` property in
their POM files (e.g., `multiapps-controller/pom.xml`).
- When changing public API (model classes, validator interfaces), coordinate updates in
downstream repos before merging.
- Build order for cross-repo changes: `multiapps` -> `multiapps-controller`.

## Key Libraries

- **SnakeYAML** — YAML parsing for MTA descriptors
- **Jackson 3.x** — JSON serialization/deserialization
- **Immutables** — annotation-processed value objects (provided scope)
- **Semver4j** — semantic versioning for MTA schema version dispatch
- **Commons Compress** — archive handling for `.mtar` files
Loading
Loading