A CLI tool to bootstrap Android or JVM Gradle projects with a customizable module graph.
curl -L https://github.com/cdsap/ProjectGenerator/releases/download/v0.2.1/projectGenerator --output projectGenerator
chmod 0757 projectGenerator- generate-project (default)
Generates a project. Example:
./projectGenerator generate-project --modules 100
- generate-yaml-versions
Produces a template
versions.yamlfile. The file can then be passed togenerate-projectvia--versions-file.
Key flags for generate-project:
--shapetriangle, rhombus, flat, rectangle, middle_bottleneck, inverse_triangle (default: rectangle)--modulesrequired number of modules--layersnumber of layers (default: 5)--languagekts (default), groovy, both--typeandroid (default) or jvm--classes-modulenumber of classes per module (default: 5)--classes-module-typefixed (default) or random--type-of-string-resourcesnormal (default) or large--generate-unit-testgenerate unit tests (default: false)--gradlegradle_8_2, gradle_8_5, gradle_8_9, gradle_8_13, gradle_8_14_3 (default)--develocityenable Develocity build scan plugin--versions-filepath to a custom YAML versions file
Example with several options:
./projectGenerator generate-project --shape rhombus --modules 50 --layers 4 --language both --type jvm --classes-module 10 --classes-module-type random --type-of-string-resources large --generate-unit-test --gradle gradle_8_9 --develocity --versions-file my_versions.yamlval modules = 50
val shape = Shape.RHOMBUS
ProjectGenerator(
modules = modules,
shape = shape,
language = Language.KTS,
typeOfProjectRequested = TypeProjectRequested.ANDROID,
classesPerModule = ClassesPerModule(ClassesPerModuleType.FIXED, 20),
versions = Versions(project = Project(jdk = "17")),
typeOfStringResources = TypeOfStringResources.LARGE,
layers = 5,
generateUnitTest = true,
gradle = GradleWrapper(Gradle.GRADLE_8_14_3),
path = file.path
).write()Add the dependency to use the generator programmatically:
implementation("io.github.cdsap:projectgenerator:0.2.1")project:
develocity: 4.0.1
jdk: 23
kotlin:
kgp: 2.1.20
ksp: 2.1.20-2.0.0
coroutines: 1.7.3
android:
agp: 8.9.1See resources/versions.yaml for a complete list.