-
Notifications
You must be signed in to change notification settings - Fork 3
Project structure, Maven scopes
This page is based represents current state of CRCE project. For older informations see old assembla wiki page.
/ (cz.zcu.kiv.crce:crce-reactor)
- Reactor for whole project build.
- Global information about project.
- Modules, profiles, repositories and distribution management declaration.
- System properties used by PAX on mvn pax:provision or mvn pax:run.
/pom (cz.zcu.kiv.crce:crce-parent)
- Parent module for sub-projects
/build (cz.zcu.kiv.crce:shared-plugin-settings)
- Shared projects setting for modules (sub-projects).
- Plugin management.
- Dependency management.
/build/compiled (cz.zcu.kiv.crce:compiled-bundle-settings)
- Build settings for bundles compiled from sources.
/build/wrappers (cz.zcu.kiv.crce:wrapper-bundle-settings)
- Build settings for bundles created by wrapping non-OSGi library.
/core/...
- Core modules
- Basic CRCE functionality
/modules/...
- Plugins for CRCE
- Additional functionality
/third-party/...
- OSGi bundle wrappers for third party libraries
/deploy (cz.zcu.kiv.crce:provision-reactor)
- Module used for deploying the application
Regular module should use scope provided for its dependencies. This scope is similar to scope compile, but provided dependency it is not resolved as transitive – it's expected that it will be provided by runtime environment (OSGi container). It's useful to declare dependencies as provided in dependency management (in /poms sub-project) so it's not needed to declare the scope in each particular module which uses that dependency.
PAX provision (mvn pax:provision or mvn pax:run) provides dependencies declared in modules (including dependencies with scope provided) unles they are declared as optional. Additional libraries / 3rd party bundles which are not declared as a dependency in any sub-project (e.g. logging implementation) may be provided by declaring as a dependency in /provision sub-project; scope type is not too important here.
crce-target sub-project won't add any dependency to distribution package built by it so each artifact including all CRCE modules must be declared as dependencies. Scope declaration is important for that into which directory in distribution package will dependendies be placed (it helps to distinguish CRCE modules and 3rd party libaries):
- provided dependencies will be placed into 'required-bundles' directory,
- runtime dependencies will be placed into 'crce-bundles' directory.
[ CRCE wiki ]
