Maven pom: soft vs hard version requirement specification
<p>In Maven <a href="https://maven.apache.org/pom.html" rel="nofollow noreferrer">POM Reference</a>, under the <a href="https://maven.apache.org/pom.html#Dependency_Version_Requirement_Specification" rel="nofollow noreferrer">Dependency version requirement specification</a> chapter, a difference is made between <em>soft</em> and <em>hard</em> requirements:</p>

<blockquote>
  <p>1.0: "Soft" requirement on 1.0 (just a recommendation, if it matches all other ranges for the dependency)<br>
  [1.0]: "Hard" requirement on 1.0</p>
</blockquote>

<p>So if I write:</p>

<pre><code>&lt;version&gt;1.0.0&lt;/version&gt;
</code></pre>

<p>I'm expressing a <em>soft</em> requirement, while with:</p>

<pre><code>&lt;version&gt;[1.0.0]&lt;/version&gt;
</code></pre>

<p>I'm requiring a hard one.</p>

<p>While I understand all the other version specifiers explained (well explained in <a href="/q/30571/3127111">this</a> question too), I can't get this difference.</p>

<p>I guess that a hard requirement means: if there's no <code>1.0.0</code> version available, that dependency can't be satisfied; but what's a soft one? Does it mean that even <code>1.0</code> or <code>1.0.0.1</code> would fit for that dependency? Or is the meaning totally different?</p>

<p>Note: I always use soft dependency specifications, I'm asking because I'm interested in understanding the difference, rather than choosing between using one or the other.</p>