{
  "id": 14578886,
  "title": "How I Shipped a Java Library to Maven Central, Solo",
  "url": "https://urgent.news/2026/10/15/how-i-shipped-a-java-library-to-maven-central-solo",
  "topic": "tech",
  "section": "Tech",
  "published": "2026-10-15T01:07:42.000Z",
  "source": {
    "name": "Dev.to",
    "slug": "dev-to",
    "url": "https://dev.to/sayner_79d00706660f58a746/how-i-shipped-a-java-library-to-maven-central-solo-52pl"
  },
  "original_language": "en",
  "account": "Maven Central, the central repository for Java libraries, received its first contribution from a single person on October 11, 2025. The library, named oncebox, tackles the dual-write problem - ensuring database updates and message-broker notifications occur together. The creator built the solution from scratch, without relying on heavyweight approaches like two-phase commit or CDC pipelines.\n\noncebox works by writing events to an outbox table within the same transaction as the business write. A separate poller then safely publishes these events to Kafka or RabbitMQ, with exponential backoff if the broker fails. The failed events are retried and managed through a dead letter queue with its own REST API for inspection.\n\nDeveloped by one person, oncebox consists of 13 Maven modules and 602 Java files, half of which are tests. The library supports PostgreSQL, MySQL, and Oracle databases, with Kafka and RabbitMQ as message brokers. After a year of solo development, the library has gone through five releases, v1.0.0 to v2.0.0.\n\nShipping the library involved more than just writing code. The creator had to handle GPG signing for verifiable releases, set up Sonatype/Central publishing flow, generate usable documentation, and configure various monitoring and testing tools. The outbox and inbox configurations are split into different sections for flexibility, and Grafana dashboards and a Postman collection provide easy access to the dead letter queue API.\n\nThe key to oncebox's design lies in its polling mechanism, which allows multiple instances to poll the same outbox table without blocking each other. The library also handles database-specific quirks, such as MySQL's gap locks under READ COMMITTED isolation level and Oracle's limitations on batch size.\n\nThe creator's focus on comprehensive testing, including unit, integration, concurrent, end-to-end, and load tests, ensured the library's reliability even without a second set of eyes. This level of testing, combined with the library's robust design, has resulted in a Maven Central release that other services can depend on confidently.",
  "summary": "The dual-write problem shows up wherever a service needs to update its database and notify the outside world as one atomic step. The write succeeds and the publish fails, or the reverse, and two systems that were supposed to agree quietly stop agreeing. The usual fixes are heavyweight: two-phase commit, or a CDC pipeline like Debezium reading the database's transaction log. I built oncebox to…",
  "key_points": [
    "Maven Central received first solo contribution on October 11, 2025",
    "oncebox library solves dual-write problem without heavy approaches",
    "Creator developed 13-module library with 602 Java files"
  ],
  "editors_take": "A single developer successfully delivering a complex, multi-module library to Maven Central demonstrates that solo engineers can provide reliable, enterprise-grade infrastructure for managing critical database and message-broker synchronization.",
  "illustration": null,
  "coverage": {
    "outlets": 1,
    "also_reported_by": []
  },
  "ai_generated": true,
  "disclaimer": "Summaries, key points and the editor’s take are written by software from other outlets’ reporting and may contain errors — always check the linked original."
}