I have a project where I use multiple dependencies. I'm used to execute my code in a dev environment using
mvn compile exec:java -Dexec.classpathScope=compile -Dexec.mainClass="my.Main"
That worked fine until I recently started using a dependency (let's call it A
) that defines its own dependencies with the runtime scope. One of its runtime dependencies (let's call it B
) is actually a dependency to another dependency of mine that I set with a provided
scope (let's call it C
).
So I have
MyProject depends on A[compile] who depends on B[runtime]
MyProject depends on C[provided] who depends on B[no-scope-specified]
I end up having B
considered as a runtime dependency which results in a ClassNotFoundException
when I launch the above command. The only solution I found is adding a dependencyManagement
entry that forces its scope to compile.
That bothers me as I do not directly use that dependency (I have no reference to it in my code) so I should not have to bother with it.
Is there some way to avoid that kind of conflict and maybe load all dependencies in the classpath when using mvn exec:java
?
Thanks