-
Notifications
You must be signed in to change notification settings - Fork 1
Building Locally
QQQ has a unique build system designed around metadata-driven development. This guide covers the QQQ-specific build process for framework developers working on QQQ itself.
QQQ uses Java 17 features and won't build with older versions:
java -version # Must show Java 17+QQQ uses advanced Maven plugins that require recent versions:
mvn -version # Must show Maven 3.8+QQQ's build system integrates with Git for version management and branch detection.
QQQ uses a custom versioning approach:
<properties>
<revision>0.27.0-SNAPSHOT</revision>
</properties>Key Points:
- Uses
revisionproperty instead of standardversion - Version is managed by
versions-maven-pluginin CI - GitFlow integration automatically handles version bumps
- No manual version management needed
QQQ has three distinct build modes:
mvn clean installWhat it builds:
-
qqq-backend-core- Framework foundation - All backend modules (RDBMS, filesystem, MongoDB, SQLite)
- All middleware modules (Javalin, PicoCLI, Lambda, Slack)
- Frontend dashboard framework
mvn clean install -P withSampleAdditional components:
-
qqq-sample-project- For testing QQQ functionality - Database setup scripts for integration testing
- Working examples to verify QQQ features
mvn clean install -P releaseFeatures:
- GPG signing for artifacts
- Source and Javadoc attachment
- Maven Central deployment preparation
QQQ enforces high standards:
<coverage.haltOnFailure>true</coverage.haltOnFailure>
<coverage.instructionCoveredRatioMinimum>0.80</coverage.instructionCoveredRatioMinimum>
<coverage.classCoveredRatioMinimum>0.95</coverage.classCoveredRatioMinimum>Coverage Requirements:
- Instructions: 80% minimum
- Classes: 95% minimum
- Build fails if coverage drops below thresholds
QQQ uses Kingsrook-specific code style:
<configLocation>checkstyle/config.xml</configLocation>
<headerLocation>checkstyle/license.txt</headerLocation>Enforced standards:
- Kingsrook copyright headers
- Consistent code formatting
- Naming conventions
- Documentation requirements
QQQ redirects test output by default:
<redirectTestOutputToFile>${testOutputToFile}</redirectTestOutputToFile>Default behavior:
- Test output goes to files under
target/surefire-reports/ - Console output suppressed for clean builds
- Override with
-DtestOutputToFile=false
# Build core framework only
mvn clean install -pl qqq-backend-core
# Run tests with coverage
mvn test jacoco:report
# Check code style
mvn checkstyle:check# Build specific module
mvn clean install -pl qqq-backend-module-rdbms
# Build module and dependencies
mvn clean install -pl qqq-backend-module-rdbms -am
# Run integration tests
mvn test -pl qqq-sample-project# Navigate to frontend
cd qqq-frontend-material-dashboard
# Install dependencies
npm install
# Start development server
npm start
# Build for production
npm run build# Check code style
mvn checkstyle:check
# Run tests with coverage
mvn test jacoco:report
# Verify coverage thresholds
mvn verify# Complete build with all modules
mvn clean install
# Build with sample project
mvn clean install -P withSample
# Build for release
mvn clean install -P release# Build single module
mvn clean install -pl qqq-backend-core
# Build module and dependencies
mvn clean install -pl qqq-backend-module-rdbms -am
# Build module tree
mvn clean install -pl qqq-backend-core -amd# Java version mismatch
java -version # Must be 17+
# Maven version too old
mvn -version # Must be 3.8+
# Coverage failure
mvn jacoco:report # Check coverage report
# Checkstyle failure
mvn checkstyle:check # Review style violations# Skip tests for faster build
mvn clean install -DskipTests
# Parallel build
mvn clean install -T 1C
# Offline mode (if dependencies cached)
mvn clean install -oFor module details, see Core Modules. For development setup, see Developer Onboarding. For testing requirements, see Testing.
QQQ is a powerful, open source, metadata-driven application framework designed specifically for engineers who want to build business applications quickly without starting from scratch.
Built by Kingsrook - making engineers more productive through intelligent automation and developer tools.
- π Wiki Home - Start here for comprehensive guides
- π GitHub Repository - Source code and issues
- π¦ Maven Central - Download artifacts
- π’ Kingsrook Website - Company information
- π§ Building Locally - Build QQQ from source
- π¨βπ» Developer Onboarding - Setup development environment
- ποΈ High-Level Architecture - Understand QQQ's design
- π¦ Core Modules - Available components and usage
- π Contribution Guidelines - How to contribute
- π Code Review Standards - Coding standards
- π§ͺ Testing Guide - Testing requirements and strategy
- π Feature Development - How to extend QQQ
- π Release Flow - Release process and workflow
- π·οΈ Semantic Versioning - Versioning policy
- π Public API Overview - API documentation
- π§ Compatibility Matrix - Version compatibility
- β FAQ - Frequently asked questions
- π¨ Common Errors - Troubleshooting guide
- π¬ GitHub Issues - Report bugs and request features
- π¬ GitHub Discussions - Ask questions and get help
- π License - GNU Affero General Public License v3.0
- π Security Policy - Report security vulnerabilities
- π Code of Conduct - Community standards
- π§ Contact - General inquiries
- π Security - Security issues
QQQ is 100% open source - you have complete ownership and control. No vendor lock-in, no SaaS subscriptions, just full control over your code, data, and system. π
This footer appears on all wiki pages. For the most up-to-date information, always check the GitHub repository.