0
# Framework Coordination
1
2
Central coordination and build management capabilities for the entire Apache Avro ecosystem, providing unified versioning, dependency management, and cross-language compatibility.
3
4
## Capabilities
5
6
### Maven Project Coordination
7
8
Coordinates Maven-based builds and dependency management across all Java components and related language implementations.
9
10
```xml { .api }
11
<!-- Main project coordinates -->
12
<project>
13
<groupId>org.apache.avro</groupId>
14
<artifactId>avro-toplevel</artifactId>
15
<version>1.12.0</version>
16
<packaging>pom</packaging>
17
<name>Apache Avro Toplevel</name>
18
19
<!-- Includes Java implementation module -->
20
<modules>
21
<module>lang/java</module>
22
</modules>
23
</project>
24
```
25
26
**Usage Examples:**
27
28
```xml
29
<!-- Include as parent POM for Avro-related projects -->
30
<parent>
31
<groupId>org.apache.avro</groupId>
32
<artifactId>avro-toplevel</artifactId>
33
<version>1.12.0</version>
34
</parent>
35
36
<!-- Reference in dependency management -->
37
<dependencyManagement>
38
<dependencies>
39
<dependency>
40
<groupId>org.apache.avro</groupId>
41
<artifactId>avro-toplevel</artifactId>
42
<version>1.12.0</version>
43
<type>pom</type>
44
<scope>import</scope>
45
</dependency>
46
</dependencies>
47
</dependencyManagement>
48
```
49
50
### Version Management
51
52
Centralized version control and synchronization across all language implementations and components.
53
54
```bash { .api }
55
# Version specification file
56
VERSION_FILE="share/VERSION.txt"
57
58
# Version format: MAJOR.MINOR.PATCH
59
# Example: 1.12.0
60
```
61
62
**Usage Examples:**
63
64
```bash
65
# Read current version
66
VERSION=$(cat share/VERSION.txt)
67
echo "Current Avro version: $VERSION"
68
69
# Use in build scripts
70
mvn versions:set -DnewVersion=$(cat share/VERSION.txt)
71
72
# Docker builds
73
docker build --build-arg AVRO_VERSION=$(cat share/VERSION.txt) .
74
```
75
76
### Cross-Language Build Coordination
77
78
Orchestrates builds across multiple programming languages with consistent tooling and standards.
79
80
```bash { .api }
81
# Main build script interface
82
function build() {
83
language: string # Target language (java, python, js, etc.)
84
target: string # Build target (compile, test, package, clean)
85
flags?: string[] # Additional build flags
86
returns: BuildResult
87
}
88
89
# Build result structure
90
interface BuildResult {
91
success: boolean
92
language: string
93
artifacts: string[]
94
testResults?: TestSummary
95
errors?: string[]
96
}
97
98
# Language detection and build dispatch
99
function detectLanguages(): string[]
100
function buildLanguage(language: string, target: string): BuildResult
101
function buildAll(target: string): BuildResult[]
102
```
103
104
**Usage Examples:**
105
106
```bash
107
# Build all language implementations
108
./build.sh
109
110
# Build specific language
111
./build.sh java
112
113
# Run tests across all languages
114
./build.sh test
115
116
# Clean all build artifacts
117
./build.sh clean
118
119
# Package for distribution
120
./build.sh package
121
```
122
123
### Development Environment Coordination
124
125
Manages development tools, configurations, and environments across the entire project ecosystem.
126
127
```yaml { .api }
128
# Development environment configuration
129
DevEnvironment:
130
java:
131
version: "11+"
132
buildTool: "maven"
133
testFramework: "junit"
134
135
docker:
136
baseImages:
137
- "openjdk:11-jdk"
138
- "python:3.9"
139
- "node:16"
140
141
editors:
142
vscode:
143
extensions: ["ms-vscode.vscode-json", "redhat.java"]
144
settings: ".vscode/settings.json"
145
146
git:
147
hooks: "share/githooks/"
148
attributes: ".gitattributes"
149
```
150
151
**Usage Examples:**
152
153
```bash
154
# Setup development environment
155
./build.sh setup-dev
156
157
# Install git hooks
158
cp share/githooks/* .git/hooks/
159
chmod +x .git/hooks/*
160
161
# Use editor configurations
162
cp share/editors/vscode/* .vscode/
163
164
# Docker development environment
165
docker-compose up -d
166
```
167
168
### Project Structure Management
169
170
Defines and maintains the organizational structure for the multi-language Avro ecosystem.
171
172
```yaml { .api }
173
# Project structure definition
174
ProjectStructure:
175
root: "/"
176
177
languages:
178
- path: "lang/java"
179
primary: true
180
buildSystem: "maven"
181
- path: "lang/python"
182
buildSystem: "setuptools"
183
- path: "lang/js"
184
buildSystem: "npm"
185
- path: "lang/csharp"
186
buildSystem: "dotnet"
187
188
shared:
189
schemas: "share/schemas/"
190
tests: "share/test/"
191
docs: "doc/"
192
version: "share/VERSION.txt"
193
194
build:
195
script: "build.sh"
196
docker: "docker-compose.yml"
197
maven: "pom.xml"
198
```
199
200
**Usage Examples:**
201
202
```bash
203
# Navigate project structure
204
ls lang/ # List all language implementations
205
ls share/schemas/ # Browse shared schemas
206
ls share/test/ # Access shared test data
207
208
# Find language-specific components
209
find lang/ -name "pom.xml" # Java Maven projects
210
find lang/ -name "package.json" # JavaScript packages
211
find lang/ -name "setup.py" # Python packages
212
```