<!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;">
    Building JBoss Tools Documentaion
</h3>
<span style="margin-bottom: 10px;">
    new comment by <a href="http://community.jboss.org/people/jdcasey">John Casey</a> <a href="http://community.jboss.org/docs/DOC-13341#comment-4122">View all comments on this document</a>
</span>
<hr style="margin: 20px 0; border: none; background-color: #dadada; height: 1px;">

<div class="jive-rendered-content"><p>Using assembly:assembly is a Really Bad Idea. Not only does this goal run in aggregator mode, which can cause other assemblies in the project tree to be skipped. It also means your asembly is built completely outside the normal build lifecycle, and will not be installed or deployed with your project.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>Too often in JBoss projects (so far), I've seen the use of this goal paired with the use of &lt;moduleSets&gt;/&lt;binaries&gt;, which means that your assembly can only be built using a tortured command line.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>It's very important that assemblies build as part of your normal build lifecycle, so tooling built around Maven for downstream consumption of your projects can be more consistent.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>The recommended approach is to confine your assemblies to a child project, which declares dependencies on the other modules in the build that it bundles. Then, use &lt;dependencySets&gt; instead of &lt;moduleSets&gt;/&lt;binaries&gt; to aggregate these binaries. Finally, use an &lt;execution&gt; block in the POM to bind the assembly:single goal to the build lifecycle, normally under the 'package' phase. This is the recommended standard, and it works pretty well for 99% of cases.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p><span>I'm working on a new version of the assembly plugin that will allow the sane use of &lt;moduleSets&gt;, and the milestone I've published is available on </span><a class="jive-link-external-small" href="http://repository.jboss.org/nexus/" target="_blank">http://repository.jboss.org/nexus/</a><span> in the Thirdparty Releases repository. Its version is '2.2-beta-6-m1-jboss'. Basically, you need to add a flag '&lt;useAllReactorProjects&gt;true&lt;/useAllReactorProjects&gt;' to each of your &lt;moduleSet&gt; declarations. At that point, you can safely use an assembly with moduleSets from a child project within a multimodule build, and bind the assembly to the main bulid lifecycle.</span></p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>In any case, move assemblies into a child project, and use dependency declarations within that child to ensure it runs at the appropriate time during the build to consume binaries from other modules.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>I'm happy to assist in refactoring these assemblies if anyone wants to find me. Most times I'm on jboss-dev IRC.</p></div>

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


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

</div>

</body>
</html>