<html style="direction: ltr;">
<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="Content-Type">
<style>body p { margin-bottom: 0cm; margin-top: 0pt; } </style>
</head>
<body style="direction: ltr;"
bidimailui-detected-decoding-type="latin-charset" text="#000000"
bgcolor="#FFFFFF">
<p>This sounds like a very refreshing move to me.<br>
<br>
But, I think it's also worth providing a guide to how to work with
the source pre-processor. As it stands, you can't just edit a
.java file and have Eclipse do the rest: you have to run the
pre-processor first. A lot of IDE functionality gets lost: debug
breakpoints, hotswapping, etc. Of course, source-level syntax
checking and formatting also does not work. This makes Restlet
quirky, odd, and in my personal view frustrating to work with at
the source level. And I tend to have a lot of patience for
quirkiness... If your goal is an easier way for contributors to
work with the source code, this remains an issue.<br>
<br>
I've been working a lot on Eclipse plugins lately ("real"
extensions of Eclipse, not merely using the PDE to generate OSGi
bundles), and wonder if we can write an Eclipse Builder that
incorporates the preprocessor, so that Eclipse will know what to
do with these .java files. This, of course, won't integrate with
NetBeans/IntelliJ, but I don't think it's wrong for Restlet to
insist on a specific IDE for best experience. (It pretty much
already does.)<br>
<br>
I'm very swamped with time lately (get prepared for an exciting
announcement soon), but maybe in the future I can contribute
something like that, better yet a more generic Eclipse plugin to
deal with source pre-processors. Or maybe something like this
already exists and I'm not aware of it.<br>
<br>
-Tal<br>
</p>
<br>
On 05/03/2012 05:02 PM, Jerome Louvel wrote:
<blockquote cite="mid:000e01cd2978$68e84800$3ab8d800$@restlet.com"
type="cite">
<meta http-equiv="Content-Type" content="text/html;
charset=ISO-8859-1">
<meta name="Generator" content="Microsoft Word 14 (filtered
medium)">
<style><!--
/* Font Definitions */
@font-face
{font-family:Wingdings;
panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
{font-family:Tahoma;
panose-1:2 11 6 4 3 5 4 4 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0cm;
margin-bottom:.0001pt;
font-size:12.0pt;
font-family:"Times New Roman","serif";}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:blue;
text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
{mso-style-priority:99;
color:purple;
text-decoration:underline;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
{mso-style-priority:34;
margin-top:0cm;
margin-right:0cm;
margin-bottom:0cm;
margin-left:36.0pt;
margin-bottom:.0001pt;
font-size:12.0pt;
font-family:"Times New Roman","serif";}
span.EmailStyle17
{mso-style-type:personal-reply;
font-family:"Calibri","sans-serif";
color:#1F497D;}
.MsoChpDefault
{mso-style-type:export-only;
font-family:"Calibri","sans-serif";
mso-fareast-language:EN-US;}
@page WordSection1
{size:612.0pt 792.0pt;
margin:70.85pt 70.85pt 70.85pt 70.85pt;}
div.WordSection1
{page:WordSection1;}
/* List Definitions */
@list l0
{mso-list-id:1047995077;
mso-list-type:hybrid;
mso-list-template-ids:312235962 67895297 67895299 67895301 67895297 67895299 67895301 67895297 67895299 67895301;}
@list l0:level1
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Symbol;}
@list l0:level2
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l0:level3
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l0:level4
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Symbol;}
@list l0:level5
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l0:level6
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l0:level7
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Symbol;}
@list l0:level8
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l0:level9
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l1
{mso-list-id:1818842723;
mso-list-type:hybrid;
mso-list-template-ids:-1433487794 67895311 67895321 67895323 67895311 67895321 67895323 67895311 67895321 67895323;}
@list l1:level1
{mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l1:level2
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l1:level3
{mso-level-number-format:roman-lower;
mso-level-tab-stop:none;
mso-level-number-position:right;
text-indent:-9.0pt;}
@list l1:level4
{mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l1:level5
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l1:level6
{mso-level-number-format:roman-lower;
mso-level-tab-stop:none;
mso-level-number-position:right;
text-indent:-9.0pt;}
@list l1:level7
{mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l1:level8
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l1:level9
{mso-level-number-format:roman-lower;
mso-level-tab-stop:none;
mso-level-number-position:right;
text-indent:-9.0pt;}
ol
{margin-bottom:0cm;}
ul
{margin-bottom:0cm;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
<div class="WordSection1">
<p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"
lang="EN-US">Hi all,<o:p></o:p></span></p>
<p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"
lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"
lang="EN-US">Thanks for the feed-back, that’s really
helpful!<o:p></o:p></span></p>
<p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"
lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"
lang="EN-US">Actually, we didn’t really want to change the
actual Restlet build system based on Ant (plus a
preprocessor for the multi-edition work). We only wanted to
provide an easier way for developers/contibutors to compile
and test the master Java source code.<o:p></o:p></span></p>
<p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"
lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"
lang="EN-US">As we are clearly moving away from PDE and
everyone seems to be fine with that, the best option seems
to get back to our roots and properly use/explain our Ant
build system from IDEs and not just from command line when
preparing Restlet official builds. BTW, Eclipse does provide
a nice support for Ant by default via the Outline view.<o:p></o:p></span></p>
<p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"
lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"
lang="EN-US">In order to remove current ambiguities around
Maven, I propose to :<o:p></o:p></span></p>
<p class="MsoListParagraph"
style="text-indent:-18.0pt;mso-list:l1 level1 lfo2"><!--[if !supportLists]--><span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"
lang="EN-US"><span style="mso-list:Ignore">1.<span
style="font:7.0pt "Times New Roman""> </span></span></span><!--[endif]--><span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"
lang="EN-US">Remove the POM files automatically generated
from Git repository<o:p></o:p></span></p>
<p class="MsoListParagraph"
style="margin-left:72.0pt;text-indent:-18.0pt;mso-list:l1
level2 lfo2"><!--[if !supportLists]--><span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"
lang="EN-US"><span style="mso-list:Ignore">a.<span
style="font:7.0pt "Times New Roman""> </span></span></span><!--[endif]--><span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"
lang="EN-US">only generate them for the Maven repository<o:p></o:p></span></p>
<p class="MsoListParagraph"
style="text-indent:-18.0pt;mso-list:l1 level1 lfo2"><!--[if !supportLists]--><span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"
lang="EN-US"><span style="mso-list:Ignore">2.<span
style="font:7.0pt "Times New Roman""> </span></span></span><!--[endif]--><span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"
lang="EN-US">Remove the PDE/MANIFEST files from Git
repository<o:p></o:p></span></p>
<p class="MsoListParagraph"
style="margin-left:72.0pt;text-indent:-18.0pt;mso-list:l1
level2 lfo2"><!--[if !supportLists]--><span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"
lang="EN-US"><span style="mso-list:Ignore">a.<span
style="font:7.0pt "Times New Roman""> </span></span></span><!--[endif]--><span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"
lang="EN-US">the proper MANIFEST are separately generated
for the OSGi edition<o:p></o:p></span></p>
<p class="MsoListParagraph"
style="text-indent:-18.0pt;mso-list:l1 level1 lfo2"><!--[if !supportLists]--><span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"
lang="EN-US"><span style="mso-list:Ignore">3.<span
style="font:7.0pt "Times New Roman""> </span></span></span><!--[endif]--><span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"
lang="EN-US">Configure the Eclipse projects’ build path
configuration<o:p></o:p></span></p>
<p class="MsoListParagraph"
style="margin-left:72.0pt;text-indent:-18.0pt;mso-list:l1
level2 lfo2"><!--[if !supportLists]--><span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"
lang="EN-US"><span style="mso-list:Ignore">a.<span
style="font:7.0pt "Times New Roman""> </span></span></span><!--[endif]--><span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"
lang="EN-US">to manage dependencies<o:p></o:p></span></p>
<p class="MsoListParagraph"
style="text-indent:-18.0pt;mso-list:l1 level1 lfo2"><!--[if !supportLists]--><span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"
lang="EN-US"><span style="mso-list:Ignore">4.<span
style="font:7.0pt "Times New Roman""> </span></span></span><!--[endif]--><span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"
lang="EN-US">Re-document the official way to develop with
Eclipse/NetBeans/IntelliJ<o:p></o:p></span></p>
<p class="MsoListParagraph"
style="margin-left:72.0pt;text-indent:-18.0pt;mso-list:l1
level2 lfo2"><!--[if !supportLists]--><span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"
lang="EN-US"><span style="mso-list:Ignore">a.<span
style="font:7.0pt "Times New Roman""> </span></span></span><!--[endif]--><span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"
lang="EN-US">Git clone<o:p></o:p></span></p>
<p class="MsoListParagraph"
style="margin-left:72.0pt;text-indent:-18.0pt;mso-list:l1
level2 lfo2"><!--[if !supportLists]--><span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"
lang="EN-US"><span style="mso-list:Ignore">b.<span
style="font:7.0pt "Times New Roman""> </span></span></span><!--[endif]--><span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"
lang="EN-US">import projects (need to add the .project files
and similar files to Git)<o:p></o:p></span></p>
<p class="MsoListParagraph"
style="margin-left:72.0pt;text-indent:-18.0pt;mso-list:l1
level2 lfo2"><!--[if !supportLists]--><span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"
lang="EN-US"><span style="mso-list:Ignore">c.<span
style="font:7.0pt "Times New Roman""> </span></span></span><!--[endif]--><span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"
lang="EN-US">locate Ant build file<o:p></o:p></span></p>
<p class="MsoListParagraph"
style="margin-left:72.0pt;text-indent:-18.0pt;mso-list:l1
level2 lfo2"><!--[if !supportLists]--><span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"
lang="EN-US"><span style="mso-list:Ignore">d.<span
style="font:7.0pt "Times New Roman""> </span></span></span><!--[endif]--><span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"
lang="EN-US">edit custom.properties<o:p></o:p></span></p>
<p class="MsoListParagraph"
style="margin-left:72.0pt;text-indent:-18.0pt;mso-list:l1
level2 lfo2"><!--[if !supportLists]--><span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"
lang="EN-US"><span style="mso-list:Ignore">e.<span
style="font:7.0pt "Times New Roman""> </span></span></span><!--[endif]--><span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"
lang="EN-US">launch Ant targets<o:p></o:p></span></p>
<p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"
lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"
lang="EN-US">How does it sounds?<o:p></o:p></span></p>
<p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D;mso-fareast-language:EN-US"
lang="EN-US">Best regards,<o:p></o:p></span></p>
<p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D;mso-fareast-language:EN-US"
lang="EN-US">Jerome<o:p></o:p></span></p>
<p class="MsoNormal"><span
style="font-size:10.0pt;font-family:"Calibri","sans-serif";color:#1F497D;mso-fareast-language:EN-US"
lang="EN-US">--<o:p></o:p></span></p>
<p class="MsoNormal"><span
style="font-size:10.0pt;font-family:"Calibri","sans-serif";color:#1F497D;mso-fareast-language:EN-US"><a
moz-do-not-send="true" href="http://www.restlet.com/"><span
style="color:#1F497D" lang="EN-US">http://www.restlet.com</span></a></span><span
style="font-size:10.0pt;font-family:"Calibri","sans-serif";color:#1F497D;mso-fareast-language:EN-US"
lang="EN-US"><o:p></o:p></span></p>
<p class="MsoNormal"><span
style="font-size:10.0pt;font-family:"Calibri","sans-serif";color:#1F497D;mso-fareast-language:EN-US"><a
moz-do-not-send="true"
href="http://twitter.com/#%21/jlouvel"><span
style="color:#1F497D">http://twitter.com/#!/jlouvel</span></a><o:p></o:p></span></p>
<p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"
lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"
lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><b><span
style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">De :</span></b><span
style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">
<a class="moz-txt-link-abbreviated" href="mailto:tpeierls-***@public.gmane.org">tpeierls-***@public.gmane.org</a> [<a class="moz-txt-link-freetext" href="mailto:tpeierls-***@public.gmane.org">mailto:tpeierls-***@public.gmane.org</a>] <b>De la
part de</b> Tim Peierls<br>
<b>Envoyé :</b> mardi 1 mai 2012 22:54<br>
<b>À :</b> <a class="moz-txt-link-abbreviated" href="mailto:code-s0N/mLB9wL+***@public.gmane.org">code-s0N/mLB9wL+***@public.gmane.org</a><br>
<b>Objet :</b> Re: Restlet Framework 2.2 - Build issues and
Eclipse/OSGi development<o:p></o:p></span></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Agree with David and Tal in general. (Full
disclosure: I'm an Ant/Ivy user.)<o:p></o:p></p>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Possible point of divergence is that I
don't see how to avoid the preprocessor-based approach to
editions, though I do see the problems with not having a
single body of pure Java source. I wonder how much of the
alternative compilation could be handled with run-time
constants and if-else (trusting to modern JVMs to optimize
away the unused branches) and stub libraries.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-bottom:12.0pt">--tim<o:p></o:p></p>
<div>
<p class="MsoNormal">On Tue, May 1, 2012 at 2:44 PM, Tal
Liron <<a moz-do-not-send="true"
href="mailto:tal.liron-KRbUgwfp4vGAiRqxG6I7vAC/***@public.gmane.org"
target="_blank">tal.liron-KRbUgwfp4vGAiRqxG6I7vAC/***@public.gmane.org</a>>
wrote:<o:p></o:p></p> <p class="MsoNormal"><html style="direction: ltr;"><br>
<head><br>
<meta content="text/html; charset=UTF-8"
http-equiv="Content-Type"><br>
<style>body p { margin-bottom: 0cm; margin-top:
0pt; } </style><br>
</head><br>
<body style="direction: ltr;"<br>
bidimailui-detected-decoding-type="UTF-8"
text="#000000"<br>
bgcolor="#FFFFFF"><br>
<p>I have to agree with David on much of
this.<br><br>
<br><br>
1) Maven is a headache. It's important to support
Maven<br>
repositories, but it's possible to do so by creating
POMs that<br>
simply attach already-built Jars, such that Maven
does not become<br>
a requirement for those susceptible to headaches. I
think Restlet<br>
has also suffered from this, as small regressions in
POMs<br>
continuously frustrate would-be contributors. Maven
is finicky.<br>
Also, as David points out, there are other tools that
support<br>
Maven repositories. Gradle, or even use Ivy directly
(the tool on<br>
which Gradle is based) from Ant tasks. Point being:
you don't need<br>
Maven for Maven.<br><br>
<br><br>
2) If Maven is a headache, PDE is a disaster. Since
Restlet does<br>
not depend on Eclipse/Equinox, this dependency always
struck me as<br>
odd. It's quite possible to build OSGi without any of
that; and,<br>
again, like Maven, not everybody needs or wants or
likes OSGi.<br>
What are you going to do if you ever want to support
Jigsaw? Wait<br>
for it to come to Eclipse?<br><br>
<br><br>
I'm personally always in favor of dumbing things
down: Ant scripts<br>
are fairly easy to read (they are scripts) and anyone
can join in<br>
the fun. I understand that Restlet targets enterprise
customers,<br>
but the library itself, even with its ecology of
plugins, is<br>
actually quite minimal and light. Somehow over the
years the build<br>
process has become very complicated. If you're stuck,
I think that<br>
instead of trying to fix this massive structure, it
may be worth<br>
rethinking the whole scheme.<br><br>
<br><br>
I think it's furthermore worth thinking of an
alternative to the<br>
way editions are compiled now, using a preprocessor.
This again<br>
makes Restlet a very quirky project, where its source
code is not<br>
in fact source code. It's hard to think of a solution
that doesn't<br>
present further problems, but this current solution
is especially<br>
difficult to work with.<br><br>
<br><br>
-Tal<br><br>
</p><br>
<br><br>
On 05/01/2012 01:27 PM, David Fogel wrote:<br>
<blockquote<br>
cite="mid:CAKtT4xMXrFPSf8TzFpbK3fc+hPsKu3P_KFGRyvEXwVR_T=<a
moz-do-not-send="true" href="mailto:5cGg-JsoAwUIsXosN+***@public.gmane.org">5cGg-JsoAwUIsXosN+***@public.gmane.org</a>"<br>
type="cite"><br>
<pre wrap="">Hi Jerome, all-<o:p></o:p></p>
<div>
<p class="MsoNormal"><br>
I'm not a big fan of Maven, and so I'd favor a build
system that<br>
didn't depend on it. That said, the PDE is a major pain
in the ass<br>
for many projects. For many years, we used PDE for all
our projects<br>
(which are all built as OSGi bundles), including
internal builds of<br>
Restlet, but a while ago we finally got so frustrated
with the PDE<br>
that we completely reworked our project and build
systems. We<br>
initially tried to use Bndtools, and maybe that would
have worked if<br>
we'd stuck with it, but at the time it wasn't well
documented. That<br>
might be worth looking into for Restlet.<br>
<br>
What we ended up with for our own stuff is a system
built around<o:p></o:p></p>
</div>
<p class="MsoNormal">Gradle ( <a
class="moz-txt-link-freetext" href="<a
moz-do-not-send="true" href="http://gradle.org/"
target="_blank">http://gradle.org/</a>"><a
moz-do-not-send="true" href="http://gradle.org/"
target="_blank">http://gradle.org/</a></a> ).
Gradle is similar to Maven in some<o:p></o:p></p>
<div>
<p class="MsoNormal">ways, but it is super flexible, and
you write your build scripts in<br>
groovy/java instead of XML. Gradle is extremely well
documented, which<br>
I think is a major argument in its favor over Maven, all
technical<br>
differences aside.<br>
<br>
There are some pretty big incompatibilities between the
way PDE works<br>
and most other build systems, which makes it hard for a
single project<br>
to play well with both. In particular, whereas PDE uses
OSGi metadata<br>
in the Manifest files to control the build, most other
build systems<br>
work by putting that metadata in a build/config file and
then<br>
generating the bundle Manifest file during the build
process.<br>
Projects that work with both can end up with two
different manifest<br>
files, only one of which is used in the final artifact.
While the PDE<br>
approach is arguably more consistent with the way OSGi
dependencies<br>
work, the PDE environment has never really broken away
from its more<br>
narrow focus of building eclipse plugins, is inflexible,
and is hard<br>
to extend for more complex projects.<br>
<br>
-Dave Fogel<br>
<br>
On Fri, Apr 27, 2012 at 3:05 AM, Jerome Louvel<o:p></o:p></p>
</div>
<p class="MsoNormal"><a class="moz-txt-link-rfc2396E"
href="mailto:<a moz-do-not-send="true"
href="mailto:jerome.louvel-s0N/***@public.gmane.org">jerome.louvel-s0N/***@public.gmane.org</a>">&<a
moz-do-not-send="true"
href="mailto:lt%3Bjerome.louvel-s0N/***@public.gmane.org">lt;jerome.louvel-s0N/***@public.gmane.org</a>&gt;</a>
wrote:<br>
</pre><br>
<blockquote type="cite"><br>
<pre wrap="">Hi all,<o:p></o:p></p>
<div>
<p class="MsoNormal"><br>
<br>
<br>
We’ve been discussing internally and separately with
several contributors<br>
regarding the build issues occurring on the master
branch in GitHub,<br>
especially with Eclipse 3.7. I’d like open up the
discussion in our<br>
developers list and take this opportunity to clarify our
goals for next 2.2<br>
version and better coordinate our efforts and
expectations :<br>
<br>
<br>
<br>
1) Repair the Eclipse PDE build<br>
<br>
<br>
<br>
The current/historical way we use to build from Eclipse
is through OSGi<br>
bundles. If you install the PDE plugins (or choose the
proper Eclipse<br>
editions), this should work by default as explained here
(needs some<o:p></o:p></p>
</div>
<p class="MsoNormal">update): <a
class="moz-txt-link-freetext" href="<a
moz-do-not-send="true"
href="http://wiki.restlet.org/developers/295-restlet/g1/216-restlet.html"
target="_blank">http://wiki.restlet.org/developers/295-restlet/g1/216-restlet.html</a>"><a
moz-do-not-send="true"
href="http://wiki.restlet.org/developers/295-restlet/g1/216-restlet.html"
target="_blank">http://wiki.restlet.org/developers/295-restlet/g1/216-restlet.html</a></a><o:p></o:p></p>
<div>
<div>
<p class="MsoNormal" style="margin-bottom:12.0pt"><br>
<br>
<br>
For version 2.2, we are trying to migrate to the
latest Eclipse 3.7 version,<br>
which now includes Maven support by default (built-in
m2e plugin). The first<br>
step I’ve been trying to accomplish is to ensure that
the pom.xml files<br>
present in the module directories don’t conflict with
the usual Eclipse/PDE<br>
build process.<br>
<br>
<br>
<br>
To use Eclipse/PDE build, you either need the “Eclipse
Classic” edition<br>
which comes with PDE bundled, or to install PDE on top
of the lighter<br>
“Eclipse IDE for Java” edition. Then, if you import
both the modules and the<br>
libraries project as explained in the wiki, you should
see the build work<br>
just fine.<br>
<br>
<br>
<br>
We do have remaining issues with OAuth, OpenID
extensions, as well as the<br>
examples project that need to be fixed. I’m a bit
stuck on this so any help<br>
is welcome. Maybe Kristoffer and/or Martin can help
for the OAuth and OpenID<br>
extensions?<br>
<br>
<br>
<br>
2) Make the m2e build work<br>
<br>
<br>
<br>
For 2.2, we would like the master to work with m2e as
well (new name for<br>
m2eclipse), as it is now bundled by default since
Eclipse 3.7 (IDE for<br>
Java).<br>
<br>
<br>
<br>
Note that currently, our POM.xml files are not
manually edited but instead<br>
generated by our forge (ant scripts) from our own
module.xml files. This was<br>
necessary in order to support multi-edition builds and
distributions in<br>
various channels (Eclipse update site, Maven update
site).<br>
<br>
<br>
<br>
So, in addition to adjusting the .project and
.classpath files, we should<br>
ensure that we can (re-)generate the proper pom.xml
files. Shaun Elliot has<br>
offered to help on that front and other contributions
will be welcome, but<br>
we need to be careful when contributing changes to
Eclipse project and pom<br>
files.<br>
<br>
<br>
<br>
3) Ensure compatibility when both PDE build and m2e
are active<br>
<br>
<br>
<br>
Finally, we should try to make the build with both pde
and m2e work at the<br>
same time in case the developers needs to develop in
PDE/OSGi mode.<br>
Currently, I see no way to fully turn off m2e for a
workspace or a project,<br>
which is annoying. There is probably a solution I’m
not aware of.<br>
<br>
<br>
<br>
The minimum is to ensure that there is no conflict and
the binaries are<br>
produced in separate directories (bin for PDE and
target/classes for m2e).<br>
<br>
<br>
<br>
4) Integrate the org.restlet.ext.osgi extension<br>
<br>
<br>
<br>
Once the previous steps are complete, at least the
first ones, we’ll start<br>
integrating the contribution from Bryan Hunt and
others currently located<br>
at:<o:p></o:p></p>
</div>
</div>
<p class="MsoNormal"><a class="moz-txt-link-freetext"
href="<a moz-do-not-send="true"
href="https://github.com/BryanHunt/Restlet-Extension-for-OSGi-Environments/"
target="_blank">https://github.com/BryanHunt/Restlet-Extension-for-OSGi-Environments/</a>"><a
moz-do-not-send="true"
href="https://github.com/BryanHunt/Restlet-Extension-for-OSGi-Environments/"
target="_blank">https://github.com/BryanHunt/Restlet-Extension-for-OSGi-Environments/</a></a><o:p></o:p></p>
<div>
<p class="MsoNormal" style="margin-bottom:12.0pt"><br>
<br>
<br>
This will allow fully dynamic usage of Restlet thanks to
OSGi, such as<br>
adding new applications or resources on the fly.<br>
<br>
<br>
<br>
Best regards,<br>
<br>
Jerome<br>
<br>
--<o:p></o:p></p>
</div>
<p class="MsoNormal"><a class="moz-txt-link-freetext"
href="<a moz-do-not-send="true"
href="http://www.restlet.com" target="_blank">http://www.restlet.com</a>"><a
moz-do-not-send="true" href="http://www.restlet.com"
target="_blank">http://www.restlet.com</a></a><br>
<br>
<a class="moz-txt-link-freetext" href="<a
moz-do-not-send="true"
href="http://twitter.com/#%21/jlouvel" target="_blank">http://twitter.com/#!/jlouvel</a>"><a
moz-do-not-send="true"
href="http://twitter.com/#%21/jlouvel" target="_blank">http://twitter.com/#!/jlouvel</a></a><br>
<br>
<br>
</pre><br>
</blockquote><br>
<pre wrap=""><br>
------------------------------------------------------<br>
<a class="moz-txt-link-freetext" href="<a
moz-do-not-send="true"
href="http://restlet.tigris.org/ds/viewMessage.do?dsForumId=7458&amp;dsMessageId=2956647"
target="_blank">http://restlet.tigris.org/ds/viewMessage.do?dsForumId=7458&amp;dsMessageId=2956647</a>"><a
moz-do-not-send="true"
href="http://restlet.tigris.org/ds/viewMessage.do?dsForumId=7458&amp;dsMessageId=2956647"
target="_blank">http://restlet.tigris.org/ds/viewMessage.do?dsForumId=7458&amp;dsMessageId=2956647</a></a><br>
</pre><br>
</blockquote><br>
</body><br>
</html><br>
<br>
------------------------------------------------------<br>
<a moz-do-not-send="true"
href="http://restlet.tigris.org/ds/viewMessage.do?dsForumId=7458&dsMessageId=2956650"
target="_blank">http://restlet.tigris.org/ds/viewMessage.do?dsForumId=7458&dsMessageId=2956650</a><o:p></o:p></p>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</div>
</blockquote>
</body>
</html>
------------------------------------------------------
http://restlet.tigris.org/ds/viewMessage.do?dsForumId=7458&dsMessageId=2957457