--- 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