Dependency Management Features
Urbancode products have supported dependencies between projects since version 1 of Anthill OS. With AnthillPro, we not only provide tools to handle dependency management at the build server but also at the developer's machine. The Eclipse and VisualStudio plug-ins, and Ant tasks allow developers to use the AnthillPro build time dependency management system, Codestation, at development time. This means that dependencies have to be defined only once, and can then be used at development time and build time.
The dependency management features in AnthillPro are robust. Full support for transitive dependencies is included. Projects can be dependent on other projects managed by AnthillPro or on third-party libraries such as log4j, STRUCTS, or any other third-party library. This later feature allows enterprises to develop a set of "blessed" versions of third-party libraries that can be reused.
Dependency Configuration in AnthillPro
AnthillPro allows each project to configure its own set of dependencies. The dependencies can be on other projects managed by AnthillPro or on third-party artifacts that are also managed by AnthillPro.
When configuring dependencies, AnthillPro presents the user with complete control over the dependency relationship. A project can be dependent on artifacts of the latest build of a dependency project, in which case AnthillPro will determine whether a new build of the dependency project is required. This type of dependency relationship is very convenient if both the dependent and the dependency projects are being developed concurrently.
The dependency relationship can be configured so that artifacts from the latest build to achieve a particular status are used. This allows the dependency project to use artifacts from the latest version of a dependent project that has passed all functional tests, or from the latest build that has been released into production.
Finally, the dependency relationship can be made very explicit by stating that a dependent project is to use the artifacts from a specific build (e.g., build 1.2.3) of the dependency project.
Dependency Tracking in Builds
Having dependencies allows for reuse of code and fine-grain build management which can reduce build server loads on large projects. On the flip side, unless traceability is built into the dependency management system, you could end up with more questions than answers. For example, what version of a dependency project was used for the build of our main project last night? Was that the same version that was used the night before? AnthillPro provides the necessary traceability to answer these questions.
AnthillPro not only tracks the dependency relationships between projects, but also the dependency relationships between builds. This information is presented to the user in the Bill of Materials of every build. This information is also available in reports and is searchable. The screen shot below shows how this information is displayed in the Bill of Materials for a specific build. One table displays the specific build providing the artifacts for each of the dependencies. The other table displays the specific builds of dependent projects that use the artifacts of the currently displayed build.
IDE Plug-in for Dependency Management
The AnthillPro dependency management system, Codestation, extends to the developers' environment. Eclipse as well as Visual Studio plug-ins interface with Codestation. The screen shot below illustrates how the project classpath within Eclipse can be configured using the Codestation plug-in.
Dependency Management Ant Tasks
For those more at home on the command line, we provide Ant tasks that interface with the exact same dependency management system. The screen shot below illustrates the pertinent snippet of an Ant script with one target to retrieve artifacts required for the build and another target that publishes the artifacts produced by the build. In both cases, the configuration of what artifacts are to be retrieved and what artifacts are to be published is configured and stored centrally in AnthillPro.