Managing Multiple Dependencies
From CitconWiki
Jump to navigationJump to searchIvy
- Ant/Java based dependency management tool
- Flexible back end artifact repository
Maven
- Large build/dependency/project managment tool
- Does much more than dependency management, which can make it overkill if that's all you want
Fig
- Can be found on github
- Small tool for managing dependencies
- Able to manage classpath, library path, etc for executable being managed
- Matt Foemmel (original co-author of Continuous Integration paper)/Chris Read
Gradle
- Build tool
- Build in dependency management (uses Ivy internally)
Versioning/Configuration management
- Have a good policy of how to introduce api changes
- Dependencies should always compile against you
- Chris: there doesn't seem to be any tool that can automatically prevent api breaking changes
Tom D question:
- Module A has some production code, as well as some unit tests, integration tests and scenario tests.
- If there are some useful *testing* utilities, should they be packaged for use externally
- Chris R: generally OK, Consider the test code as a different target environment (e.g. prod vs test)
Is this a design smell?
- module B depends on test code from module A, therefore get module A to publish separate test utility artifact
- comment: break out the test utility into its own module
- however, this will cause a cyclic dependency between B and A test utils
Question:
- How to express dependencies of modules with different languages/artefact types?
- Dependency information should be independent of any specific CI system
- Ivy or Fig look like good candidates for these problems