Create empty maven submodule `cma-sqm`
Problem
For the implementation of CMA SQM API Specification we should have an additional submodule.
Solution
Create empty submodule in the parent maven project with cma-sqm
name.
Decisions
Empty cma-sqm
submodule in the parent maven project should be created, with directory and pom.xml
.
Alternatives
- Use different git repositories. Doesn't provide pros while this project is small enough and should be coupled in integrations with other modules.
- Use Java 9 modules. Project owner doesn't have enough experience with it.
- Use packages. Project modules should be not coupled so tightly.
Concerns
- Modules should be coupled in terms of integrations. Each change should be checked on compatibility with other modules.
- Modules should be decoupled in terms of implementation details. Only public API changes could have an effect on other modules.
Assumptions
- Build time of each module (compile, checks + tests) should be small enough to do not block multiple developers working on this repository.
- Submodules could have child submodules for better separation of public API and implementation details.
- Submodules would not have any circular dependencies. It's better to have some sort of duplication instead of the wrong abstraction (c).
Risks
- Build time would not be fast enough [5;7]
- Prevention of circular dependencies would force a great amount of code duplication [2;6]