This document covers the Gradle build system configuration and automation used in the OwnLang project. This includes the Gradle wrapper setup, build task execution, and continuous integration configuration. For information about the multi-project structure and module dependencies, see Multi-Project Structure. For details about JAR packaging and distribution artifacts, see Distribution and Deployment.
The OwnLang project uses the Gradle Wrapper to ensure consistent build environments across different development machines and CI systems. The wrapper is configured to use Gradle version 8.10.2 and provides both Unix and Windows execution scripts.
The wrapper configuration specifies the Gradle distribution URL and local storage paths for the wrapper files. The distribution is downloaded automatically on first execution if not already cached locally.
Sources: gradle/wrapper/gradle-wrapper.properties1-7 gradlew1-235 gradlew.bat1-90
The primary build task for OwnLang is shadowJar
, which creates an executable JAR file containing all dependencies. This task is provided by the Shadow plugin and produces the final distributable artifact.
The shadowJar
task produces OwnLang.jar
as the main executable artifact, which can be executed using java -jar OwnLang.jar
with various command-line options for running OwnLang programs.
Sources: README.md139
The project uses GitHub Actions for automated building and testing across multiple Java versions. The CI configuration ensures compatibility with both Java 17 and Java 21, which are the current LTS versions.
The workflow is configured to run on pushes and pull requests to the latest
branch, ensuring that all code changes are automatically validated before integration.
Sources: .github/workflows/gradle.yml1-27
The Gradle wrapper consists of shell and batch scripts that bootstrap the Gradle build system without requiring a pre-installed Gradle distribution. The wrapper automatically downloads and caches the specified Gradle version.
Component | Purpose | Platform |
---|---|---|
gradlew | Unix shell script wrapper | Linux, macOS, Unix-like |
gradlew.bat | Windows batch script wrapper | Windows |
gradle-wrapper.jar | Bootstrap JAR with wrapper logic | Cross-platform |
gradle-wrapper.properties | Configuration and version specification | Cross-platform |
The wrapper scripts detect the Java installation, set up the classpath, and execute the GradleWrapperMain
class from the wrapper JAR. Default JVM options are configured as -Xmx64m -Xms64m
to provide a minimal memory footprint for the wrapper process.
The wrapper ensures reproducible builds by using the exact Gradle version specified in the properties file, eliminating version conflicts between different development environments.
Sources: gradlew88-89 gradlew.bat36 gradle/wrapper/gradle-wrapper.properties4