<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<body link="#355491" alink="#4262a1" vlink="#355491" style="background: #e2e2e2; margin: 0; padding: 20px;">

<div>
        <table cellpadding="0" bgcolor="#FFFFFF" border="0" cellspacing="0" style="border: 1px solid #dadada; margin-bottom: 30px; width: 100%; -moz-border-radius: 6px; -webkit-border-radius: 6px;">
                <tbody>
                        <tr>

                                <td>

                                        <table border="0" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF" style="border: solid 2px #ccc; background: #dadada; width: 100%; -moz-border-radius: 6px; -webkit-border-radius: 6px;">
                                                <tbody>
                                                        <tr>
                                                                <td bgcolor="#000000" valign="middle" height="58px" style="border-bottom: 1px solid #ccc; padding: 20px; -moz-border-radius-topleft: 3px; -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 5px; -webkit-border-top-left-radius: 5px;">
                                                                        <h1 style="color: #333333; font: bold 22px Arial, Helvetica, sans-serif; margin: 0; display: block !important;">
                                                                        <!-- To have a header image/logo replace the name below with your img tag -->
                                                                        <!-- Email clients will render the images when the message is read so any image -->
                                                                        <!-- must be made available on a public server, so that all recipients can load the image. -->
                                                                        <a href="http://community.jboss.org/index.jspa" style="text-decoration: none; color: #E1E1E1">JBoss Community</a></h1>
                                                                </td>

                                                        </tr>
                                                        <tr>
                                                                <td bgcolor="#FFFFFF" style="font: normal 12px Arial, Helvetica, sans-serif; color:#333333; padding: 20px;  -moz-border-radius-bottomleft: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 5px; -webkit-border-bottom-left-radius: 5px;"><h3 style="margin: 10px 0 5px; font-size: 17px; font-weight: normal;">
    Coping with versions in large multi-module osgi projects
</h3>
<span style="margin-bottom: 10px;">
    new comment by <a href="http://community.jboss.org/people/irbull">Ian Bull</a> - <a href="http://community.jboss.org/community/tools/blog/2011/09/17/coping-with-versions-in-large-multi-module-osgi-projects#comment-7626">View all comments on this blog post</a>
</span>
<hr style="margin: 20px 0; border: none; background-color: #dadada; height: 1px;">

<div class="jive-rendered-content"><p>I'll let the OSGi purists battle the OSGi parts, but from a p2 perspective I see some things that could really get you in trouble. In particular, it's all related to the version 1.2.3.GA.&#160; (or even worse 1.0.0).&#160; p2 uses and ID/Version as a unique identifier.&#160; So, if you have a bundle called Foo version 1.2.3.GA and you realize that you messed up the build, so you built again. Now you have two different sets of bytes with the same Unique ID (Foo/1.2.3.GA).</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>If p2 has cached the original one somewhere&#160; (or someone has it installed), then it's anybodies guess wich version will get fetched.&#160; This is why nobody should ever reuse the same version for the same bundle.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>PDE/Build takes 1.0.0.qualifier and replaces it with a timestamp, so at least part of the version changes.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>Another (related) problem.&#160; If <strong>nothing</strong> changes in a bundle then the version should not change. Let's say JBoss version 1.2.3 is released.&#160; Tomorrow you release 1.2.4 and only 1 line of code in one bundle has changed.&#160; If all your bundles get their versoin bumped, then users will download all 628 artifacts, instead of the single artifact that changed.&#160; </p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>BTW, the Eclipse project has over 400 bundles and they manage their versions without bumping each bundle for each build.&#160; There are techniques for doing this successfully including map files, API Tools and the Jar Comparator.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>Cheers,</p><p>Ian</p></div>

</td>
                        </tr>
                    </tbody>
                </table>


                </td>
            </tr>
        </tbody>
    </table>

</div>

</body>
</html>