Note that there are some explanatory texts on larger screens.

plurals
  1. POMaven: develop against version ranges with SNAPSHOTs but release against fixed versions
    primarykey
    data
    text
    <p>For any moderately complex software project, you can quickly end up with complex dependency chains.</p> <p>Consider the following dependency tree:</p> <pre><code> A --&gt; B --&gt; C `--------^ </code></pre> <p>Both A and B depend on C. As each project evolves, fixed dependencies prevent continuous integration. (e.g. if C is updated with a fix needed by A, B's dependency will also need to be udpated...) Using <a href="http://semver.org/" rel="nofollow">semantic</a> versioning we can keep the modules in line with version ranges without constantly tweaking the poms.</p> <p>[In reality this graph is more complex. We shouldn't need to combine everything into a multi-module project (or otherwise combine them) as this would defeats modularity. We want to build <em>modular software</em> with <em>continuous integration</em>.]</p> <p>However deployed releases should be immutable. The versions they depend on should be fixed in stone, so a release picked up today (+ its dependencies) is the same as if used next year.</p> <p><strong>Goals</strong>:</p> <ul> <li>Developers work on SNAPSHOT releases (picking SNAPSHOT dependencies either locally, or from Hudson)</li> <li>Release are made against the latest (compatible) released versions of dependencies (excluding SNAPSHOTs)</li> <li>Releases are forever immutable. Depending on A=1.0.0 will always bring in the same versions of B and C</li> </ul> <p><strong>Questions</strong>:</p> <ul> <li>What's the best way to do this in Maven? Are there any links / documents describing this use case?</li> <li>Can the maven release plugin resolve version ranges and bake them into the release?</li> </ul> <p><strong>Given</strong>:</p> <ul> <li>By default maven (3.0.3) picks up SNAPSHOT dependencies in version ranges.</li> <li>SNAPSHOTs and releases can be deployed to separate repositories</li> </ul> <p>Is there a better way of doing continuous integration with maven?</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload