---
name: maven-build
description: Maven build configuration for the crypto-scout multi-module Java 25 project
license: MIT
compatibility: opencode
metadata:
tool: maven
language: java
version: "25"
---
## What I Do
Provide guidance for building, testing, and packaging the crypto-scout multi-module Maven project.
## Project Structure
```
crypto-scout/
├── pom.xml # Root aggregator POM
├── crypto-scout-test/
│ └── pom.xml # Test library
├── crypto-scout-client/
│ └── pom.xml # Data collection service
├── crypto-scout-collector/
│ └── pom.xml # Data persistence service
└── crypto-scout-analyst/
└── pom.xml # Analysis service
```
## Build Commands
### Full Build
```bash
# Clean and build all modules
mvn clean install
# Build without tests (faster)
mvn -q -DskipTests install
```
### Module-Specific Builds
```bash
# Build specific module
cd crypto-scout-client
mvn clean package
# Build with dependency resolution from root
cd crypto-scout-collector
mvn clean package -DskipTests
```
### Testing
```bash
# Run all tests
mvn test
# Run tests for specific module
cd crypto-scout-test && mvn test
# Run single test class
mvn test -Dtest=AmqpPublisherTest
# Run single test method
mvn test -Dtest=AmqpPublisherTest#shouldPublishPayloadToStream
# Run with extended timeout (slow environments)
mvn -q -Dpodman.compose.up.timeout.min=5 test
# Custom database URL for tests
mvn -q -Dtest.db.jdbc.url=jdbc:postgresql://localhost:5432/crypto_scout test
```
### Clean Build
```bash
# Clean all modules
mvn clean
# Clean and rebuild single module
cd crypto-scout-client && mvn clean package -DskipTests
```
## POM Configuration
### Root POM (Aggregator)
```xml
com.github.akarazhev.cryptoscout
crypto-scout
0.0.1
pom
crypto-scout-test
crypto-scout-client
crypto-scout-collector
crypto-scout-analyst
```
### Module POM Structure
```xml
com.github.akarazhev.cryptoscout
crypto-scout
0.0.1
crypto-scout-client
jar
25
25
6.0-rc2
1.4.0
org.apache.maven.plugins
maven-compiler-plugin
3.14.1
25
org.apache.maven.plugins
maven-shade-plugin
3.6.1
package
shade
com.github.akarazhev.cryptoscout.Client
```
## Key Dependencies by Module
### crypto-scout-test
- `jcryptolib` - JSON utilities
- `junit-jupiter` - JUnit 6 testing
- `stream-client` - RabbitMQ Streams
- `amqp-client` - RabbitMQ AMQP
- `postgresql` - PostgreSQL driver
### crypto-scout-client
- `jcryptolib` - JSON utilities, clients
- `activej-servicegraph` - DI and lifecycle
- `activej-jmx` - JMX monitoring
- `stream-client` - RabbitMQ Streams
### crypto-scout-collector
- `jcryptolib` - JSON utilities
- `activej-servicegraph` - DI and lifecycle
- `activej-jmx` - JMX monitoring
- `activej-datastream` - Data streaming
- `stream-client` - RabbitMQ Streams
- `amqp-client` - RabbitMQ AMQP
- `postgresql` - PostgreSQL driver
- `HikariCP` - Connection pooling
### crypto-scout-analyst
- Same as crypto-scout-collector
## Build Artifacts
### Output Locations
| Module | Artifact | Location |
|--------|----------|----------|
| crypto-scout-test | JAR library | `target/crypto-scout-test-0.0.1.jar` |
| crypto-scout-client | Fat JAR | `target/crypto-scout-client-0.0.1.jar` |
| crypto-scout-collector | Fat JAR | `target/crypto-scout-collector-0.0.1.jar` |
| crypto-scout-analyst | Fat JAR | `target/crypto-scout-analyst-0.0.1.jar` |
### Running Fat JARs
```bash
# crypto-scout-client
java -jar crypto-scout-client/target/crypto-scout-client-0.0.1.jar
# crypto-scout-collector
java -jar crypto-scout-collector/target/crypto-scout-collector-0.0.1.jar
# crypto-scout-analyst
java -jar crypto-scout-analyst/target/crypto-scout-analyst-0.0.1.jar
```
## Troubleshooting
### Build Failures
```bash
# Clear local repo and rebuild
rm -rf ~/.m2/repository/com/github/akarazhev
mvn clean install
# Debug dependency tree
mvn dependency:tree
# Check for updates
mvn versions:display-dependency-updates
```
### Test Failures
```bash
# Run with verbose output
mvn test -X
# Skip tests temporarily
mvn install -DskipTests
# Run specific test with debug
mvn test -Dtest=ClassName -Dmaven.surefire.debug
```
## When to Use Me
Use this skill when:
- Building the project for the first time
- Running tests across modules
- Creating new module POMs
- Troubleshooting build failures
- Configuring Maven plugins
- Understanding dependency management
- Packaging services for deployment