title: When to use "optional" dependencies and when to use "provided" scope?
body: <p>Dependencies decorated by <code>&lt;optional&gt;true&lt;/optional&gt;</code> or <code>&lt;scope&gt;provided&lt;/scope&gt;</code> will be ignored when they are dependent transitively. I have read <a href="http://maven.40175.n5.nabble.com/lt-scope-gt-provided-lt-scope-gt-vs-lt-optional-gt-true-lt-optional-gt-td2852244.html" rel="noreferrer">this</a>, my understanding is like the difference between @Component and @Service in Spring, they only vary semantically.</p>
  <p>Is it right?</p>