Managing Multiple Dependencies
From CitconWiki
Jump to navigationJump to searchThe printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
Ivy
- 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