Pasquale Congiusti created CAMEL-22967:
------------------------------------------

             Summary: [build] Add the dependency analyze maven feature
                 Key: CAMEL-22967
                 URL: https://issues.apache.org/jira/browse/CAMEL-22967
             Project: Camel
          Issue Type: Task
            Reporter: Pasquale Congiusti


We are not executing this plugin which may turns very useful to help in 
dependency management in long term. As an example taken from a random component:

{code}
[INFO] --- dependency:3.9.0:analyze (default-cli) @ camel-jetty ---
[WARNING] Used undeclared dependencies found:
[WARNING]    org.apache.camel:camel-attachments:jar:4.18.0-SNAPSHOT:compile
[WARNING]    org.apache.camel:camel-mock:jar:4.18.0-SNAPSHOT:test
[WARNING]    org.hamcrest:hamcrest:jar:2.2:test
[WARNING]    jakarta.xml.bind:jakarta.xml.bind-api:jar:4.0.4:compile
[WARNING]    org.apache.camel:camel-core-model:jar:4.18.0-SNAPSHOT:compile
[WARNING]    jakarta.activation:jakarta.activation-api:jar:2.1.4:compile
[WARNING]    org.apache.camel:camel-test-junit5:jar:4.18.0-SNAPSHOT:test
[WARNING]    org.apache.camel:camel-api:jar:4.18.0-SNAPSHOT:compile
[WARNING]    org.junit.jupiter:junit-jupiter-api:jar:5.13.4:test
[WARNING]    org.apache.httpcomponents.core5:httpcore5:jar:5.3.6:test
[WARNING]    org.eclipse.jetty:jetty-io:jar:12.1.6:compile
[WARNING]    org.apache.camel:camel-util:jar:4.18.0-SNAPSHOT:compile
[WARNING]    org.slf4j:slf4j-api:jar:2.0.17:compile
[WARNING]    org.apache.logging.log4j:log4j-api:jar:2.25.3:test
[WARNING]    com.fasterxml.jackson.core:jackson-annotations:jar:2.19.4:test
[WARNING]    org.mockito:mockito-core:jar:5.21.0:test
[WARNING]    org.apache.camel:camel-core-engine:jar:4.18.0-SNAPSHOT:test
[WARNING]    org.apache.camel:camel-http-base:jar:4.18.0-SNAPSHOT:compile
[WARNING]    jakarta.servlet:jakarta.servlet-api:jar:6.1.0:compile
[WARNING]    org.springframework:spring-context:jar:6.2.15:test
[WARNING]    org.eclipse.jetty:jetty-http:jar:12.1.6:compile
[WARNING] Unused declared dependencies found:
[WARNING]    org.eclipse.jetty.ee10:jetty-ee10-servlets:jar:12.1.6:compile
[WARNING]    org.eclipse.jetty:jetty-client:jar:12.1.6:compile
[WARNING]    org.apache.camel:camel-management:jar:4.18.0-SNAPSHOT:test
[WARNING]    org.apache.camel:camel-spring-xml:jar:4.18.0-SNAPSHOT:test
[WARNING]    org.apache.camel:camel-xpath:jar:4.18.0-SNAPSHOT:test
[WARNING]    org.assertj:assertj-core:jar:3.27.7:test
[WARNING]    org.apache.camel:camel-openapi-java:jar:4.18.0-SNAPSHOT:test
[WARNING]    org.apache.camel:camel-jackson:jar:4.18.0-SNAPSHOT:test
[WARNING]    org.apache.camel:camel-jacksonxml:jar:4.18.0-SNAPSHOT:test
[WARNING]    org.junit.jupiter:junit-jupiter:jar:5.13.4:test
[WARNING]    org.apache.logging.log4j:log4j-slf4j2-impl:jar:2.25.3:test
[WARNING] Non-test scoped test only dependencies found:
[WARNING]    jakarta.xml.bind:jakarta.xml.bind-api:jar:4.0.4:compile
[WARNING]    org.eclipse.jetty:jetty-security:jar:12.1.6:compile
[WARNING]    org.eclipse.jetty.ee10:jetty-ee10-servlet:jar:12.1.6:compile
[WARNING]    org.apache.camel:camel-core-model:jar:4.18.0-SNAPSHOT:compile
[WARNING]    org.apache.camel:camel-util:jar:4.18.0-SNAPSHOT:compile
[WARNING]    org.eclipse.jetty:jetty-http:jar:12.1.6:compile
{code}

This example shows we have grown a chaotic dependency management which is not 
really declaring what each component directly use and instead leverage the 
transitive dependencies which may disappear at any point in time during the 
evolution of the software.

I advocate to introduce this plugin as a warning only during our regular build 
(which will also show up locally, so, each dev can clean and fix the problems 
he discovers). Additionally we can introduce a github action which fails the PR 
that introduces any change which is not compliant. The latter can be a parallel 
action to run during each PR and be not enforced at the beginning (while we 
need time to clean older tech debt). In the long run (when all the project is 
clean) it may turn into a policy enforncement rule.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to