O'Reilly logo
  • Marco Shimomoto thinks this is interesting:

Dependencies may have limited visibility (called scope).

  • test: The library is used to compile and run test classes but is not packaged in the produced artifact.
  • provided: The library is provided by the environment (persistence provider, application server, etc.) and is only used to compile the code.
  • compile: The library is necessary for compilation and execution.
  • runtime: The library is only required for execution but is excluded from the compilation (e.g., JSF components and JSTL tag libraries).

From

Cover of Beginning Java EE 7

Note

Maven dependencies