AlexanderAshitkin commented on a change in pull request #631: URL: https://github.com/apache/maven/pull/631#discussion_r763162965
########## File path: maven-caching-extension/src/site/markdown/CACHE.md ########## @@ -17,154 +17,110 @@ ## Overview -Idea of Incremental Maven is to specify module inputs and outputs and make them known to standard Maven core. This -allows accurate analysis and determination of out-of-date build artifacts in the build dependencies graph. Making the -dependency graph analysis deterministic leads to improvements in build times by avoiding re-building unnecessary -modules. -Cache does not make any low-level interventions to build process and delegates actual build work to Maven core. This -guarantees that build results are identical to results produced by standard Maven and are fully reproducible. -To achieve accurate input and outputs calculation incremental Maven combines automatic introspection -of [project object model](https://maven.apache.org/pom.html#What_is_the_POM) in conjunction with configuration-driven -rules for fine-grained content and execution control. For content analysis it digests based approach which is more -reliable over widely used file timestamps in tools like Make or Apache Ant. Deterministic build state allows reliably -cache even intermediate outputs of build and share them between teams using remote cache. Deterministic inputs -calculation allows distributed and parallel builds running in heterogeneous environments (like cloud of build agents) -could efficiently reuse cached build artifacts. Therefore incremental Maven is particularly well-suited for large Maven -projects that have significant number of small modules. Remote cache in conjunction with precise input identification -effectively enables "change once - build once" approach. +Build cache is an extension targeted to simplify and make more efficient work with large repositories in Maven. That is +achieved by a combination of features: + +* Incremental builds over the changed project graph part only +* Subtree support in multimodule projects (caches discovered from the larger project) +* Version normalization to support project version agnostic caches +* Project state restoration (partial) to avoid expensive tasks (code generation and similar) + +Large projects usually pose scalability challenges and work with such projects require build tool which scales. Cache +extension addresses that with incremental build execution and ability to efficiently work on sub-parts of a larger +project without building and installing dependencies from the larger project. Though, features implemented in maven +should give noticeable benefits in medium and small sized projects as well. + +### Cache concepts + +Idea of Incremental Maven is to calculate key from module inputs, store outputs in cache and restore them later +transparently to the standard Maven core. In order to calculate the key cache engine analyzes source code, build flow, +plugins and their parameters. This allows to deterministically associate each project state with unique key and restore +up-to-date(not changed) projects from cache and rebuild out-of-date(changed) ones. Restoring artifacts associated with a Review comment: fixed -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: issues-unsubscr...@maven.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org