This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
# Build entire project (shared library + CLI)
./build_and_test.sh
# Build shared library only
cd shared && mvn clean install
# Build CLI only
cd cli && mvn clean package
# Run integration tests
cd tests && bash test.sh# Test with Maven
mvn test
# Build with Ant (root project uses NetBeans Ant)
ant clean && ant jarJDEPLOY_SKIP_INTEGRATION_TESTS- Set to skip integration tests during build
jDeploy is a Java desktop app deployment tool with a multi-module architecture:
cli/- Main jDeploy CLI application (Maven project)shared/- Shared libraries used by CLI and installer (Maven project)installer/- Native installer generation (Maven project)- Root project - Uses Ant/NetBeans build system
-
CLI (
cli/src/main/java/ca/weblite/jdeploy/) - Main application logicJDeploy.java- Main entry pointservices/- Core services (publishing, packaging, project generation)publishing/- GitHub and NPM publishing driverspackaging/- JAR packaging and bundlinggui/- Swing GUI components
-
Shared (
shared/src/main/java/ca/weblite/jdeploy/) - Common utilitiesmodels/- Data models (AppManifest, JDeployProject)services/- Shared services (signing, verification)appbundler/- Native app bundlingjvmdownloader/- JVM embedding functionality
- Root project uses Ant with NetBeans project structure
- Individual modules use Maven with Java 8 compatibility
- Custom build hooks in
build.xmlembed jar-runner utility - Local Maven repository at
maven-repository/for custom dependencies
- GitHub Actions - Automated installer generation via GitHub workflow
- NPM - CLI tool distribution
- Maven Central - Plugin and archetype distribution
- Windows (x64, ARM64 with new ShellLink_ARM64.dll)
- macOS (x64, ARM64)
- Linux (x64)
- Unit tests in each module's
src/test/java/ - Integration tests in
tests/projects/with individual test scenarios - Mock projects for testing different deployment configurations
package.jsonfiles - NPM metadata for deployable appsjdeploy.js- JavaScript shim for running Java apps via NPMaction.yml- GitHub Action definitionbuild_and_test.sh- Main build script
- Do NOT add Co-Authored-By lines or any Claude/AI attribution to commit messages
- Use conventional commit format:
type: description(e.g.,feat:,fix:,refactor:,docs:,test:) - Keep commit messages concise and descriptive
Status: In Progress
Plan Document: rfc/jdpignore-implementation-plan.md
Description: Migrating from nativeNamespaces in package.json to .jdpignore files for platform-specific native library filtering.
Important: When working on platform-specific bundles or native library filtering:
- ALWAYS read
rfc/jdpignore-implementation-plan.mdfirst to understand the current plan and progress - Update the status tracking in that document as work is completed
- Add implementation notes and decisions to the plan document
- Follow the phase-by-phase approach outlined in the plan