This is the heart of this project.
This is a security manager used to prevent file system access from within the jvm to any resource
outside of a maven project's directory hierarchy, and to prevent writing any files, except to the
the project's output directory.
This constraints are loosened to support the proper execution of maven. You should be able to
read your dependencies, for example.
In order to handle multiple reactor builds occurring at the same time within the same jvm
(takari-smart-builder) the configuration of files allowed to be accessed during execution are
stored in an
InheritableThreadLocal
instance of
ProjectContext
.
If you run code generators, such as apt during the generate-sources phase, you should be able to
access your dependencies sources dirs in a reactor build. In general, you should follow the
standard takari life cycle and generate sources during the compilation phase, so that your source
should not need to rely on any source code from another project, instead rely only on it's
compiled sources and copied resources.
If you need to generate sources during the generate-sources phase with an apt implementation, or
carefully list your code generators to occur before compilation, but still in the compilation
phase.
If you have code/resources generators that must be interleaved in the compilation phase to
generate source from apt sources, and you are not using apt to do this (it handles multiple pass
code generation -- though might lead to an infinite loop), you are a terrible person and your use
case is not supported