Improvement #2059
Updated by Henning Blohm over 5 years ago
{{include(More_efficient_handling_of_API_and_Impl_in_Rebuilds)}}
h2. Acceptance Criterias
* There is a new component type *com.zfabrik.impl*
** The impl component is a reduced Java Component that only supports a private loader.
** All sources are found in *<component>/src*<notextile></notextile>, <component>/src, binaries in *<component>/bin/{lib|classes}* <component>/bin/{lib|classes}
** The component type *com.zfabrik.impl* supports *impl.references* and *impl.includes*<notextile></notextile>, *impl.includes*, etc.
* There is a new component type *com.zfabrik.api*
** The impl component is a reduced Java Component that only supports a public loader.
** All sources are found in<notextile></notextile>*<component>/src*<notextile></notextile>, in<component>/src, binaries in *<component>/{lib|classes}* <component>/{lib|classes}
** The component type *com.zfabrik.api* supports *api.references* and *api.includes*<notextile></notextile>, *api.includes*, etc.
** The component type *com.zfabrik.java* by default has a public reference to <module>/api
* There is a new component type *com.zfabrik.test*
** The test component is a reduced Java Component that only supports a private loader.
** All sources are found in *<component>/src*<notextile></notextile>, <component>/src, binaries in *<component>/bin/{lib|classes}* <component>/bin/{lib|classes}
** The component type *com.zfabrik.test* supports *test.references* and *test.includes*<notextile></notextile>, *test.includes*, etc.
** For test components, *testing.references* *test.references* can access the private loader of the target
** A test component has a default *testing.reference* test.reference to *<module>/impl*
* *JavaComponentUtil.getJavaComponent* JavaComponentUtil.getJavaComponent is deprecated and replaced by *JavaComponentUtil.getImplComponent* JavaComponentUtil.getImplComponent and *JavaComponentUtil.getApiComponent* JavaComponentUtil.getApiComponent
** All usages of *JavaComponentUtil.getJavaComponent* JavaComponentUtil.getJavaComponent when looking for component implementations are replaced by *JavaComponentUtil.getImplComponent* JavaComponentUtil.getImplComponent
** *JavaComponentUtil.getImplComponent* JavaComponentUtil.getImplComponent checks for *<module>/impl* and if that cannot be found falls back to *<module>/java*
** *JavaComponentUtil.getApiComponent* JavaComponentUtil.getApiComponent checks for *<module>/java* and if that cannot be found defaults to *<module>/api*
* Eclipsoid resolves for *<module>/java* and *<module>/api*
* Eclipsoid supports two module templates:
** One with /java (legacy, pre 2.9)
** One with /api and /impl
