Single-repository source for XNAT, consolidating 25 previously separate repositories
under a unified Gradle 9 build. The full git history of xnat-web is preserved on master.
xnat/
├── settings.gradle # Subproject registration (21 includes)
├── build.gradle # Root build: sets group and version for all modules
├── gradle.properties # Global build properties (version, parallel, cache, JVM args)
├── gradlew / gradlew.bat # Gradle Wrapper — use these instead of a local gradle install
├── gradle/
│ ├── libs.versions.toml # Version Catalog — single source of truth for all dependency versions
│ └── wrapper/ # Wrapper JAR and properties
├── buildSrc/ # Convention plugins (shared build logic)
│ ├── build.gradle # Declares groovy-gradle-plugin + maven-settings-plugin
│ ├── settings.gradle # Wires Version Catalog into buildSrc
│ └── src/main/groovy/
│ ├── buildlogic.java-common-conventions.gradle # Applied to every Java module
│ └── buildlogic.java-library-conventions.gradle # Adds java-library on top of common
│
│ ── Modules (21 total, flat layout) ──
│
│ Layer 1 — Foundation (no internal dependencies)
├── parent/ # java-platform BOM — publishes dependency constraints
├── test/ # Shared test utilities and base classes
├── framework/ # Core NRG framework: DI, ORM, services, annotations
├── transaction/ # Transaction management
├── extattr/ # Extended attributes
├── dicom-edit4/ # DICOM scripting DSL built on dcm4che 2.x (ANTLR 3)
├── dicom-edit6/ # DICOM scripting DSL v6 built on dcm4che 5.x (ANTLR 4)
│
│ Layer 2–3 — Services
├── prefs/ # Preferences service (→ framework)
├── mail/ # Mail service (→ framework)
├── mizer/ # DICOM anonymizer (→ framework, transaction)
├── config/ # Configuration service (→ prefs)
├── notify/ # Notification service (→ mail)
├── automation/ # Automation and scripting engine (→ framework)
├── dicomtools/ # DICOM tools (→ config, framework, extattr, mizer)
├── dicom-image-utils/ # DICOM image processing utilities (→ mizer)
│
│ Layer 4–5 — Data & Domain
├── xdat/ # XDAT data access layer, ORM, generated types (→ notify, config, …)
├── spawner/ # UI element and form generation in Groovy DSL (→ xdat)
│
│ Layer 6–8 — Web Application
├── dicom-xnat-sop/ # DICOM SOP class handling for XNAT (→ xdat, dicom-edit6)
├── dicom-xnat-util/ # DICOM/XNAT bridge utilities (→ xdat, dicom-edit4, mizer)
├── xnat-web/ # Main web application — produces xnat-web-<version>.war
│ ├── src/main/java/
│ │ ├── org/nrg/xnat/… # Original xnat-web source
│ │ ├── org/nrg/xdat/model/… # From xnat-data-models (merged)
│ │ ├── org/nrg/xnat/helpers/prearchive/… # From session-builders (merged)
│ │ ├── org/nrg/ecat/… # From ecat4xnat (merged)
│ │ ├── org/nrg/dcm/xnat/… # From dicom-xnat-mx (merged)
│ │ └── org/nrg/xnat/archive/… # From prearc-importer (merged)
│ └── src/main/resources/schemas/ # XSD schemas from xnat-data-models (merged)
│
│ Layer 9 — Build Tooling
└── xnat-data-builder/ # Gradle plugin for external XNAT plugin development (published)