eed3si9n/scalaxb
64.8
Adequate · 20 September 2026
13.5k
lines of production code
Scala
with Java
1
measurement over time
What this system is
This system is a code generation tool that produces Scala source code from XML Schema (XSD) and Web Services Description Language (WSDL) files. It provides build plugins for both Maven and sbt, enabling developers to integrate XML binding and HTTP client generation into their build lifecycles. The generated code supports various SOAP versions and multiple HTTP client libraries, with configurable options for package naming, async handling, and data structure styles.
How it got here
2010 — sbt migration and code generation refactor
9 changes.
The project migrated its build system from Ant to sbt and removed legacy DTD and XSD code generators. The remaining XSD compiler was refactored into modular traits with enhanced features like Monocle lens generation and improved name collision handling. A web interface for schema compilation was also introduced alongside significant dependency updates.
2011 — Maven plugin release and HTTP client support
16 changes.
This period focused on the initial release of the scalaxb Maven plugin, providing comprehensive documentation and integration tests for XSD and WSDL code generation. It also introduced new CLI templates for generating HTTP clients and SOAP bindings across multiple libraries, alongside expanded test coverage for XML parsing and serialization.
2012–2025 — Plugin refactoring and test expansion
6 changes.
The project focused on modernizing the sbt-scalaxb plugin by adopting the AutoPlugin architecture and introducing extensive configuration options for code generation, such as support for various HTTP libraries and namespace customizations. Concurrently, the Maven plugin's logging was integrated with Maven's standard system, and a suite of new integration tests was added to verify help functionality, blocking code generation, and Jakarta namespace support across different Scala versions.
Features
Add Maven site documentation and configuration
The project now includes a generated Maven site with user-facing documentation. This adds a 'Getting started' guide explaining how to configure the scalaxb-maven-plugin in a pom.xml and run code generation, along with a full example project demonstrating the setup. The site is styled using the maven-fluido-skin (version 1.1) and provides navigation to plugin goal documentation.
mvn-scalaxb/src/site · high confidence
Added SOAP 1.1, SOAP 1.2, and WSDL 1.1 XML Schema definitions
The CLI now includes the official W3C XML Schema definitions for SOAP 1.1, SOAP 1.2, and WSDL 1.1. These new files in the \cli/src/main/xsd\ directory provide the structural validation rules for SOAP envelope elements (such as Header, Body, and Fault) and WSDL components (such as definitions, portType, and binding), enabling the tool to validate and process these specific web service standards.
cli/src/main/xsd · high confidence
Added ScalaXB launch configuration for development
A new launch configuration file has been added to the project under src/main/conscript/scalaxb/, enabling developers to run the ScalaXB compiler directly. This configuration specifies version 1.7.1 of the org.scalaxb scalaxb application, targets Scala 2.11.12, and configures access to Sonatype Public and Maven Central repositories.
src/main · high confidence
Generated XML schema protocol bindings for the CLI
The CLI now includes generated Scala code (xmlschema\_xmlprotocol.scala) that provides XML serialization and deserialization support for XML Schema types. This adds implicit formats for parsing and writing XML Schema constructs (such as elements, complex types, and attributes) using the scalaxb library, enabling the CLI to handle XML Schema-based data structures.
_cli/src\managed/xmlschema · high confidence
Initial project setup and migration to sbt
The project has been initialized with standard configuration files including a .gitignore, .java-version (1.8), LICENSE (MIT), README, and INSTALL documentation. The build system has been migrated from Ant (build.xml) to sbt, removing the legacy build.xml and build.properties.SAMPLE files. This change establishes the foundational structure for building and installing scalaxb via sbt or coursier.
(repo-wide) · high confidence
Initial release of the scalaxb App Engine web interface
This change introduces the web application component for scalaxb, enabling users to compile XML schemas into Scala code via a web interface hosted on Google App Engine. The update adds the necessary servlet infrastructure, including a CompilerFilter that accepts POST requests with schema files (either via URI or multipart upload) and returns the generated Scala source code as a file or a ZIP archive. It also includes the supporting model classes for handling schema files and output, along with the standard App Engine configuration files (web.xml, appengine-web.xml) and a landing page.
web · high confidence
Initial release of the scalaxb Maven plugin
This change introduces the mvn-scalaxb module, providing a Maven plugin that invokes scalaxb to generate Scala sources from XSD files during the build lifecycle. The release includes the plugin's pom.xml, an install script for local repository deployment, a publish script for Sonatype OSSRH releases, and comprehensive documentation in the README.
mvn-scalaxb · high confidence
Introduce Maven plugin for generating Scala code from XSD and WSDL
The mvn-scalaxb module now provides a Maven plugin that generates Scala source code from XML Schema (XSD) and Web Services Description Language (WSDL) files. Users can configure the input directories, output location, target package names, and various code generation options such as dispatch client generation, HTTP4s client support, and case class chunking. The plugin integrates with Maven's build lifecycle to automatically add generated sources to the project and supports incremental builds within IDEs via m2e lifecycle mapping.
mvn-scalaxb/src/main · high confidence
New code-generation templates for HTTP clients and SOAP bindings
The CLI now ships a comprehensive set of new resource templates that generate Scala HTTP client implementations and SOAP bindings. This includes base traits for synchronous and asynchronous HTTP clients, specific implementations for the Dispatch library (versions 0.10.0 through 2.0.0 and classic), Gigahorse (0.2), and http4s (0.21–0.23), as well as tagless-final abstractions. It also adds templates for SOAP 1.1 and 1.2 clients in both standard and tagless-final styles, along with core XML parsing utilities and a Dispatch-as-Scalaxb adapter, enabling generated code to support multiple HTTP backends and SOAP versions out of the box.
cli/src/main/resources · high confidence
XSD compiler refactored into modular traits and new code-generation capabilities
The XSD compiler in the CLI module has been restructured from a monolithic design into a set of focused traits (Args, ContextProcessor, GenLens, GenProtocol, GenSource, Lookup, Parsers) to improve maintainability and extensibility. This change introduces optional support for generating Monocle lenses for case classes, enables the generation of Visitor patterns for polymorphic types, and adds configuration options for asynchronous SOAP handling (including Tagless Final style via Cats). It also standardizes the protocol package naming and improves namespace handling for complex schema structures.
cli/src/main/scala/scalaxb/compiler/xsd · high confidence
Removals
Removal of the DTD schema-to-Scala code generator
The \src/schema2src/dtd\ module, which provided a tool to generate Scala source code from DTD (Document Type Definition) files, has been removed. This eliminates the ability to use the \schema2src dtd\ command-line interface to parse DTDs and produce validating Scala classes and objects, as all associated driver, handler, and source-generation files have been deleted.
src/schema2src/dtd · high confidence
Removed legacy XSD code generation driver and source generator
The XSD module's core driver (Driver.scala) and source generation logic (GenSource.scala) have been deleted. This removes the previous implementation that parsed XSD schemas and generated Scala source code containing type symbols and element declarations for XML binding.
src/schema2src/xsd · high confidence
Behavioural changes
CLI configuration and logging subsystem refactored
The command-line interface now uses a structured \Config\ case class to manage all code-generation options (such as package names, client styles, and version targets) and replaces the previous logging mechanism with a new \Log\ wrapper built on Apache Log4j 2, providing consistent, formatted output for the compiler.
repository · high confidence
Improved name collision handling for Scala code generation
The CLI now includes a dedicated \ScalaNames\ module to better manage reserved words and common identifiers during XML-to-Scala code generation. This change prevents naming conflicts by recognizing Java object methods (such as \equals\, \hashCode\, and \toString\) and common Scala collections as reserved terms, while also treating \value\ as a special attribute word to avoid collisions. Additionally, keywords like \macro\ and \Nil\ are now explicitly handled, ensuring generated code compiles without errors when XML elements or attributes share these names.
cli/src/main/scala/scalaxb/compiler · high confidence
Sbt-scalaxb plugin refactored to AutoPlugin with expanded configuration options
The sbt-scalaxb plugin has been ported to use sbt's AutoPlugin architecture, consolidating task and setting keys into a unified structure. This change introduces several new code-generation options, including support for tagless-style service generation (with a \mapK\ option), the ability to generate a single client type (Dispatch, Gigahorse, or Http4s), and configurable enum name length limits. It also adds support for the Gigahorse HTTP library with selectable backends (OkHttp, AHC), allows customization of JAXB package namespaces (javax vs. jakarta), and provides keys for controlling symbol encoding and capitalization strategies in generated code.
sbt-scalaxb/src/main · high confidence
scalaxb Maven plugin logs through Maven's logging system
The scalaxb Maven plugin now routes its internal log4j output through Maven's standard logging interface via a new LogAppender. This ensures that scalaxb's informational, warning, and error messages are properly integrated into the Maven build console output, making them visible and consistent with other plugin logs.
scalaxb-maven-plugin · high confidence
Fixes
Regenerated WSDL 1.1 SOAP bindings via scalaxb
The generated SOAP protocol implementation for WSDL 1.1 in \cli/src\_managed/wsdl11\ has been regenerated using the scalaxb library. This update refreshes the XML serialization and deserialization formats for WSDL types (such as definitions, imports, and services) to align with the latest snapshot of the scalaxb code generator, ensuring the internal package is correctly masked and the generated traits handle XML parsing according to the current tooling standards.
_cli/src\managed/wsdl11 · medium confidence
Test coverage
Add WSDL integration test for stock quote service; Add integration test for Jakarta package generation; Add integration test for blocking code generation; Add integration test for packageNames parameter; Add scripted tests for XSD, WSDL, and XHTML code generation; Added Scala 2.13+ and 2.13- specific test base classes for compiler matching; Added integration test for XML parsing and serialization; Added integration tests for XML Schema parsing and customization; Added unit and integration tests for the Maven plugin; Expanded integration test coverage for Scala XML binding features; Integration test added for the scalaxb:help goal; Removed legacy test suite files for link and XHTML schemas.
Dependencies
Build infrastructure updated to SBT 1.13.0 with modern Scala and dependency versions
The project's build system has been upgraded to SBT 1.13.0, enabling support for Scala 2.12.21, 2.13.18, and Scala 3.3.8. Key dependencies have been updated to their latest versions, including Log4j 2.24.3, Dispatch 1.0.1/1.1.0, Http4s 0.23.18, Gigahorse 0.5.0, and Scala XML 2.1.0. The build now uses the \dev.optics\ Monocle 3.2.0 for Scala 2.13+ and Scala 3, while retaining \com.github.julien-truffaut\ Monocle 2.0.3 for Scala 2.12. SBT plugins have also been updated, including sbt-assembly 2.3.1 and sbt-buildinfo 0.13.1.
project · high confidence
Scalaxb 1.12.3 release with updated dependencies and build configuration
This release updates the project to version 1.12.3-SNAPSHOT and refreshes the build infrastructure for both the sbt and Maven plugins. The sbt build (build.sbt) now targets Scala 2.12 as the default, supports cross-building for Scala 2.12, 2.13, and 3.x, and configures the sbt plugin to require sbt 1.5.8+ for Scala 2.12 or sbt 2.0.1+ for Scala 3. The Maven plugin (mvn-scalaxb/pom.xml) updates its dependencies to Scala 2.12.21, scala-xml 2.1.0, scala-parser-combinators 2.1.1, JUnit 4.13.2, and ScalaTest 3.2.17, while also bumping various Maven plugin versions (e.g., maven-plugin-annotations 3.15.0, maven-source-plugin 3.4.0). Integration tests and scripted tests are updated to reflect these dependency changes and test scenarios including Jakarta JAXB packages and HTTP4s client generation.
(dependencies) · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Baseline
- First survey — no prior run to compare against. CAI 65.
Lenses
- Code Health 88
- Architecture 99
- Maturity 56
- Readiness 65
- Security 69
Changes since last survey
- 300 commits — 270 feature/other, 30 fixes
By area
- (repo) — 113 commits
- cli/src — 57 commits
- (root) — 37 commits
- mvn-scalaxb/pom.xml — 21 commits
- integration/src — 17 commits
- .github/workflows — 12 commits
- sbt-scalaxb/src — 12 commits
- project/dependencies.scala — 9 commits
- project/build.properties — 6 commits
- mvn-scalaxb/src — 5 commits
- project/common.scala — 3 commits
- .github/dependabot.yml — 2 commits
- project/plugins.sbt — 2 commits
- cli/offline.sbt.txt — 1 commit
- mvn-scalaxb/README.md — 1 commit
- project/pgp.sbt — 1 commit
- src/main — 1 commit
Notable commits
- fix: 2nd attempt to fix integration tests in 2.11
- fix: Feature/fix dispatch core 2 version (#682)
- fix: Fix Scala 3 error: parentheses are required around the parameter of a lambda
- fix: Fix bug "match may not be exhaustive." error when compailing with 2.13.4
- fix: Fix build
- fix: Fix list support
- fix: Fix mvn testing
- fix: Fix soap12_tagless template for scala 3
- fix: Fix type mismatch error
- fix: Fix unused import ElemName
- fix: Fixed: Same name of the <complexType> and <element name> generate incorrect Lens
- fix: Fixes handling of package
- fix: Fixes mvn scalaxb doc links
- fix: Lenses reserved word fix (#539)
- fix: Revert "Properly Format BigDecimal Attributes."
- fix: Revert "Remove lens generation feature from master"
- fix: fix 2.13 compilation fix tests to be class instead of object (see https://github.com/etorreborre/specs2/issues/757)
- fix: fix 2.13 integration tests warnings
- fix: fix DispatchResponseAsScalaxbTest
- fix: fix Line is indented too far to the left warnings in Scala 3
- …and 280 more
Architecture
- 0 containers · 2 bounded contexts · 0 dependency edges (baseline)
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
eed3si9n/scalaxb was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 20 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit 038521b676588011f2e9a71c3e05395494407317 — the exact code this score is about.
- Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-b51f968c9b10.