Is there a Maven “compiler-only” scope for dependency artifacts

前端 未结 2 938
旧巷少年郎
旧巷少年郎 2021-01-03 20:06

I realise this is more of a semantic quest rather than a functionality quest.

I have three types of compile-scope dependencies:

  1. Compile-only scope,

2条回答
  •  被撕碎了的回忆
    2021-01-03 20:34

    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:

    1. It is always necessary to load that class
      1. the class should be shipped as part of the application: compile
      2. the class should be provided by the runtime environment: provided
    2. It is sometimes necessary (because that class will be loaded only under particular circumstances): 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).

提交回复
热议问题