AlexanderAshitkin commented on code in PR #146:
URL: 
https://github.com/apache/maven-build-cache-extension/pull/146#discussion_r1579540296


##########
src/main/java/org/apache/maven/buildcache/checksum/MavenProjectInput.java:
##########
@@ -617,7 +621,13 @@ private static boolean isReadable(Path entry) throws 
IOException {
     private SortedMap<String, String> getMutableDependencies() throws 
IOException {
         SortedMap<String, String> result = new TreeMap<>();
 
-        for (Dependency dependency : project.getDependencies()) {
+        Set<Dependency> dependencies = Stream.concat(

Review Comment:
   In general, detecting mutable dependencies in the build plugins looks 
correct. 
   Implementation-wise:
   1. The current implementation has a minor flaw because the dependencies are 
merged into a single map. If the same dependency is present in the project and 
the plugin and accounted for just once, it potentially creates a collision when 
either of them is removed (removing one dependency will not change the checksum)
   2. For traceability, plugin dependencies should be distinguishable from the 
project dependencies in the `buildInfo.xml`. Creating a separate, 
self-explaining `DigestItem` for them is better. 
   
   The logic of inspecting plugins should be moved one level up to 
`calculateChecksum` and better be like this:
   ```txt
   For every plugin:
     - find mutable plugin dependencies (slightly refactor 
`getMutableDependencies` to accept dependencies list)
     - create 'DigetsItem's with plugin info (for traceability - to understand 
the source of the particular component of the checksum)
     - add the items to the overall checksum 
     - for all the above - add debug logs for troubleshooting
   ```
   The benefit of this approach is the better traceability of the final 
checksum. 



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscr...@maven.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to