is something similar possible for bundles as well?
Yes, having the `jgit` timestamp provider would do this for bundles as well.
My aim is not
reproducible versions per-se, but to prevent that I get "updated"
artifacts for each build to reduce the amount of data that needs to be
downloaded for updates.
So all the additional "replace from baseline" and checks for same
content are not necessary for me.
The tricky part is about the changes (eg environment, build options...) that can affect the build result and not appear in the Git history. A strategy that only uses Git timestamp to build qualifier is likely to build and distribute different artifacts with same fully qualified version, and that is against the expectations of good versioning.
Comparing with baseline does replacement for convenience, but more importantly, it does some comparison and verification and make build fail if things seem inconsistent.
On the other hand if I can avoid
BUILDING the artifact if it has not changed that would be useful, but as
I understand it is first build, then compared and if equal replaced.
Yes, for the reason mentioned above (environment can matter), it's not really possible to fully know what changed before it's built.
But it would still be possible to build such a strategy if you are happy enough with the restrictions/risks related to it.
I also wonder if there is any chance to get the list of CHANGED
artifacts, so if I like to update the baseline repo I only need to
upload new files?
Assuming you can get or deduce the Git commit of the baseline, you can get the list of modified files with plain Git, then you can reduce it to a set of folders, and pass those folders to your `mvn` command as `-pl` and with some extra flag to make your baseline part of the target-platform. As a result, only modified modules will be built.