I realise this is more of a semantic quest rather than a functionality quest.
I have three types of compile-scope dependencies:
Compile-only scope,
Don't complain that the language does not offer fine distinctions if you only know half its vocabulary.
If a dependency is only used for building, such as an annotation processor, it should be a maven
, or
thereof.
Otherwise, if it is in the compilation classpath, it will be necessary for linking the generated class file at runtime. Then, there are two cases:
compile
provided
true
The only option not covered is compiling a Java program, and never running it in a JVM. This is a really obscure use case, and I can't fault the designers of maven for not including a scope just to express this distinction - particularly since it is irrelevant to Maven's core responsibility (building the software).