Project

General

Profile

More efficient handling of API and Impl in Rebuilds » History » Version 3

Henning Blohm, 18.02.2020 09:30

1 1 Henning Blohm
h1. More efficient handling of API and Impl in Rebuilds
2 2 Henning Blohm
3
Currently, in the dependency map used by the ComponentsBuilder, we analyze the necessity of a rebuild by comparing
4
build timestamps maintained in a dependency map in dependent components with a latest built timestamp kept in the
5
build lock file of the dependency component.
6
7
If there is a rebuild of an implementation part of a Java component, the build timestamp is updated and so a
8
rebuild of all dependency components forced - which is unnecessary, unless there was a change in the API as well.
9
10
We would like that a rebuild of dependency Java components is not forced, if there is no change of the API of a dependency component
11
12
h2. With the current model
13
14
At the level of the dependency component:
15
16
* Separate build timestamps for API and implementation as maintained in the build lock file.
17
18
At the level of the dependent component:
19
20
* When checking for rebuild in dependency components only check for matches with the API build timestamp.
21 3 Henning Blohm
* Keep a cache of build results and copy from there, if no deemed necessary - because the sources are not younger than the last build-timestamp
22 1 Henning Blohm
23 3 Henning Blohm
24 2 Henning Blohm
25
h2. A new component split
26
27
The solution would be altogether completely natural, if api and impl as well as test would be different "Java" components.
28
29
We could have a simple layout:
30
31
<pre>
32
<module>/api
33
<module>/impl
34
</pre>
35
36
For compatibility, we could consider
37
38
<pre>
39
<module>/impl -(private)-> <module>/java/impl
40
<module>/java -(public)->  <module>/java/api
41
</pre>