qpid-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Phil Harvey (Confluence)" <conflue...@apache.org>
Subject [CONF] Apache Qpid > Java Build System
Date Wed, 07 Aug 2013 10:10:01 GMT
<html>
<head>
    <base href="https://cwiki.apache.org/confluence">
            <link rel="stylesheet" href="/confluence/s/en/2176/1/21/_/styles/combined.css?spaceKey=qpid&amp;forWysiwyg=true"
type="text/css">
    </head>
<body style="background: white;" bgcolor="white" class="email-body">
<div id="pageContent">
<div id="notificationFormat">
<div class="wiki-content">
<div class="email">
    <h2><a href="https://cwiki.apache.org/confluence/display/qpid/Java+Build+System">Java
Build System</a></h2>
    <h4>Page <b>edited</b> by             <a href="https://cwiki.apache.org/confluence/display/~phil@philharveyonline.com">Phil
Harvey</a>
    </h4>
        <br/>
                         <h4>Changes (1)</h4>
                                 
    
<div id="page-diffs">
                    <table class="diff" cellpadding="0" cellspacing="0">
    
            <tr><td class="diff-snipped" >...<br></td></tr>
            <tr><td class="diff-unchanged" > <br>* Full set of artifacts,
e.g. *.tar.gz files <br></td></tr>
            <tr><td class="diff-added-lines" style="background-color: #dfd;">*
How to control whether Apache License-incompatible modules such as bdbstore are built. <br></td></tr>
            <tr><td class="diff-unchanged" >* The tests that should be run <br>*
The reports that should be generated, e.g. test results, code coverage reports etc. <br></td></tr>
            <tr><td class="diff-snipped" >...<br></td></tr>
    
            </table>
    </div>                            <h4>Full Content</h4>
                    <div class="notificationGreySide">
        <p>This page describes how we would replace the Qpid Java Ant-based build system
with one that uses Maven. The intention is to establish what we would need to do. Debate about
whether it's actually worth doing should take place on the mailing list(s).</p>

<div>
<ul>
    <li><a href='#JavaBuildSystem-Tasks'>Tasks</a></li>
<ul>
    <li><a href='#JavaBuildSystem-Definewhatthebuildsystemhastodo'>Define what
the build system has to do</a></li>
    <li><a href='#JavaBuildSystem-Addtoplevelpom.xmlinqpid%2Fjava%2F'>Add top-level
pom.xml in qpid/java/</a></li>
    <li><a href='#JavaBuildSystem-Definewhatthemavenmodulesshouldbeandwhattheirdependencyrelationshipsare'>Define
what the maven modules should be and what their dependency relationships are</a></li>
    <li><a href='#JavaBuildSystem-Addpom.xmlfilestoexistingmodulefolders'>Add
pom.xml files to existing module folders</a></li>
    <li><a href='#JavaBuildSystem-Getsystestsworking'>Get systests working</a></li>
    <li><a href='#JavaBuildSystem-Executecodegenerationinthesamewayastoday'>Execute
code generation in the same way as today</a></li>
</ul>
</ul></div>

<h2><a name="JavaBuildSystem-Tasks"></a>Tasks</h2>
<p>The likely steps are listed in the sections below.</p>

<h3><a name="JavaBuildSystem-Definewhatthebuildsystemhastodo"></a>Define
what the build system has to do</h3>
<p>This is important so we can check how close to complete we are as we progress. To
be included:</p>

<ul>
	<li>Full set of artifacts, e.g. *.tar.gz files</li>
	<li>How to control whether Apache License-incompatible modules such as bdbstore are
built.</li>
	<li>The tests that should be run</li>
	<li>The reports that should be generated, e.g. test results, code coverage reports
etc.</li>
	<li>Define how custom builds will be supported. For example, if an organisation wishes
to produce a custom Qpid build including third-party broker plugins, how will this be achieved?</li>
</ul>


<h3><a name="JavaBuildSystem-Addtoplevelpom.xmlinqpid%2Fjava%2F"></a>Add
top-level pom.xml in qpid/java/</h3>
<p>Use this to define things such as:</p>
<ul>
	<li>Set of modules to be built</li>
	<li>Java compiler version (v1.6) etc</li>
</ul>


<h3><a name="JavaBuildSystem-Definewhatthemavenmodulesshouldbeandwhattheirdependencyrelationshipsare"></a>Define
what the maven modules should be and what their dependency relationships are</h3>
<p>These are likely to be slightly different to the existing modules.</p>

<h3><a name="JavaBuildSystem-Addpom.xmlfilestoexistingmodulefolders"></a>Add
pom.xml files to existing module folders</h3>
<ul>
	<li>The build.xml files would not be removed until the refactoring is complete.</li>
	<li>The dependencies should be quite easy to set up, using the information already
in build.deps.</li>
</ul>


<h3><a name="JavaBuildSystem-Getsystestsworking"></a>Get systests working</h3>
<ul>
	<li>The compile-time dependency from systests to the test code of other modules can
be easily satisfied - proton's test module already does this.</li>
	<li>Replace the existing "profiles". Maven's profiles can probably be used to do this.
Specifically:
	<ul>
		<li>Each profile could specify some JUnit Categories to include/exclude in the tests</li>
		<li>Each profile could set the required system properties.</li>
		<li>Given that Maven profiles are not mutually exclusive, we could create specific
profiles for each "dimension" (e.g. store type protocol version, whether to spawn the test
broker) and activate several of them at run-time.**</li>
	</ul>
	</li>
</ul>


<h3><a name="JavaBuildSystem-Executecodegenerationinthesamewayastoday"></a>Execute
code generation in the same way as today</h3>
<ul>
	<li>This is used to generate logging code and protocol-specific code.</li>
	<li>We will probably have to launch external tools such as Velocity and Jython using
Maven's built-in mechanism.</li>
</ul>


    </div>
        <div id="commentsSection" class="wiki-content pageSection">
        <div style="float: right;" class="grey">
                        <a href="https://cwiki.apache.org/confluence/users/removespacenotification.action?spaceKey=qpid">Stop
watching space</a>
            <span style="padding: 0px 5px;">|</span>
                <a href="https://cwiki.apache.org/confluence/users/editmyemailsettings.action">Change
email notification preferences</a>
</div>
        <a href="https://cwiki.apache.org/confluence/display/qpid/Java+Build+System">View
Online</a>
        |
        <a href="https://cwiki.apache.org/confluence/pages/diffpagesbyversion.action?pageId=25205012&revisedVersion=5&originalVersion=4">View
Changes</a>
                |
        <a href="https://cwiki.apache.org/confluence/display/qpid/Java+Build+System?showComments=true&amp;showCommentArea=true#addcomment">Add
Comment</a>
            </div>
</div>
</div>
</div>
</div>
</body>
</html>

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org


Mime
View raw message