Package org.machanism.machai.project.layout
package org.machanism.machai.project.layout
APIs for detecting, describing, and working with a repository's on-disk project layout.
This package centers on ProjectLayout, an abstraction that models a
project as a root directory plus conventional, root-relative locations such as source, test, resource, and
documentation roots. Implementations determine these locations either from build-tool conventions or by inspecting
build metadata such as Maven pom.xml, Gradle build files, JavaScript package.json, or Python
pyproject.toml.
Core concepts
- Project directory: the filesystem root from which all returned paths are interpreted.
- Root-relative locations: most accessor methods return relative paths that should be resolved against the configured project directory before direct filesystem use.
- Modules: child projects discovered from build metadata or directory conventions for multi-module repositories.
Package responsibilities
- Provide a common interface for querying standard project folders independent of build system.
- Support discovery of module identifiers and module directories for multi-project builds.
- Offer specialized implementations for common ecosystems while preserving a shared access pattern.
Implementations
MavenProjectLayoutderives layout information from Maven project structure andpom.xmlmetadata.GragleProjectLayoutexposes conventional Gradle-oriented project locations.JScriptProjectLayoutresolves JavaScript workspace modules frompackage.jsonconfiguration.PythonProjectLayoutidentifies Python project structure usingpyproject.tomlconventions.DefaultProjectLayoutacts as a fallback implementation when no tool-specific model is available.
Example
java.io.File projectDir = new java.io.File("repo");
ProjectLayout layout = new MavenProjectLayout().projectDir(projectDir);
java.util.List<String> modules = layout.getModules();
java.util.Collection<String> sources = layout.getSources();
java.util.Collection<String> tests = layout.getTests();
java.util.Collection<String> documents = layout.getDocuments();
-
ClassesClassDescriptionMinimal fallback
ProjectLayoutimplementation.A Gradle-specificProjectLayoutimplementation.A project layout utility for JavaScript/TypeScript-based projects.A Maven-specificProjectLayoutimplementation.Utility for reading and processing Mavenpom.xmlfiles into Maven models.Base abstraction for describing a project's conventional on-disk layout.Project layout implementation for Python-based projects.