Situation
ComponentA and productA build independently as different projects. During build process of ProductA, componentA will be checked for changes: if there are new changes in componentA, a new componentA version will be generated, and the new build result will be used to construct productA; otherwise, build result of latest version of componentA will be used instead.
Demonstration
- To simulate new changes in componentA, build condition of the demo componentA configuration
is set to always build so that a new componentA version will be generated whenever it is triggered.
- Visit latest build of productA
. Hover mouse over the dependencies link in the build summary section, and you will see that current build of productA depends on most recent version of componentA.
- Click the run button to build productA. A new version will be generated in componentA
besides the new version in productA
. When new build of productA finishes, examine its dependency again, and it is now dependent on the newly generated version of componentA.
Resolution
- Visit repository setting of productA
. There are two repositories defined: component-a and product-a. Repository product-a is used to retrieve source code of productA from SCM, while repository component-a is used to retrieve build result of componentA. Repository component-a is defined to retrieve all published jars from componentA, with the build defined as latest build (generate new if necessary).
- Visit step setting of productA
. Two checkout steps are defined to checkout repository product-a and component-a respectively.