Apache Avro meta-framework that coordinates data serialization implementations across multiple programming languages
—
Central coordination and build management capabilities for the entire Apache Avro ecosystem, providing unified versioning, dependency management, and cross-language compatibility.
Coordinates Maven-based builds and dependency management across all Java components and related language implementations.
<!-- Main project coordinates -->
<project>
<groupId>org.apache.avro</groupId>
<artifactId>avro-toplevel</artifactId>
<version>1.12.0</version>
<packaging>pom</packaging>
<name>Apache Avro Toplevel</name>
<!-- Includes Java implementation module -->
<modules>
<module>lang/java</module>
</modules>
</project>Usage Examples:
<!-- Include as parent POM for Avro-related projects -->
<parent>
<groupId>org.apache.avro</groupId>
<artifactId>avro-toplevel</artifactId>
<version>1.12.0</version>
</parent>
<!-- Reference in dependency management -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.apache.avro</groupId>
<artifactId>avro-toplevel</artifactId>
<version>1.12.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>Centralized version control and synchronization across all language implementations and components.
# Version specification file
VERSION_FILE="share/VERSION.txt"
# Version format: MAJOR.MINOR.PATCH
# Example: 1.12.0Usage Examples:
# Read current version
VERSION=$(cat share/VERSION.txt)
echo "Current Avro version: $VERSION"
# Use in build scripts
mvn versions:set -DnewVersion=$(cat share/VERSION.txt)
# Docker builds
docker build --build-arg AVRO_VERSION=$(cat share/VERSION.txt) .Orchestrates builds across multiple programming languages with consistent tooling and standards.
# Main build script interface
function build() {
language: string # Target language (java, python, js, etc.)
target: string # Build target (compile, test, package, clean)
flags?: string[] # Additional build flags
returns: BuildResult
}
# Build result structure
interface BuildResult {
success: boolean
language: string
artifacts: string[]
testResults?: TestSummary
errors?: string[]
}
# Language detection and build dispatch
function detectLanguages(): string[]
function buildLanguage(language: string, target: string): BuildResult
function buildAll(target: string): BuildResult[]Usage Examples:
# Build all language implementations
./build.sh
# Build specific language
./build.sh java
# Run tests across all languages
./build.sh test
# Clean all build artifacts
./build.sh clean
# Package for distribution
./build.sh packageManages development tools, configurations, and environments across the entire project ecosystem.
# Development environment configuration
DevEnvironment:
java:
version: "11+"
buildTool: "maven"
testFramework: "junit"
docker:
baseImages:
- "openjdk:11-jdk"
- "python:3.9"
- "node:16"
editors:
vscode:
extensions: ["ms-vscode.vscode-json", "redhat.java"]
settings: ".vscode/settings.json"
git:
hooks: "share/githooks/"
attributes: ".gitattributes"Usage Examples:
# Setup development environment
./build.sh setup-dev
# Install git hooks
cp share/githooks/* .git/hooks/
chmod +x .git/hooks/*
# Use editor configurations
cp share/editors/vscode/* .vscode/
# Docker development environment
docker-compose up -dDefines and maintains the organizational structure for the multi-language Avro ecosystem.
# Project structure definition
ProjectStructure:
root: "/"
languages:
- path: "lang/java"
primary: true
buildSystem: "maven"
- path: "lang/python"
buildSystem: "setuptools"
- path: "lang/js"
buildSystem: "npm"
- path: "lang/csharp"
buildSystem: "dotnet"
shared:
schemas: "share/schemas/"
tests: "share/test/"
docs: "doc/"
version: "share/VERSION.txt"
build:
script: "build.sh"
docker: "docker-compose.yml"
maven: "pom.xml"Usage Examples:
# Navigate project structure
ls lang/ # List all language implementations
ls share/schemas/ # Browse shared schemas
ls share/test/ # Access shared test data
# Find language-specific components
find lang/ -name "pom.xml" # Java Maven projects
find lang/ -name "package.json" # JavaScript packages
find lang/ -name "setup.py" # Python packagesInstall with Tessl CLI
npx tessl i tessl/maven-org-apache-avro--avro-toplevel