2006/9/9, Arnaud Bailly <<a href="mailto:abailly@oqube.com" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">abailly@oqube.com</a>>:<div><span class="gmail_quote"></span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">

"Olivier Sambourg" <<a href="mailto:olivier.sambourg@gmail.com" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">olivier.sambourg@gmail.com</a>> writes:<br><br>> Hi everyone,<br>>
<br>> Most importantly, you can extend it with plugins (written in Java), so I've
<br>> been toying with the idea of an Erlang plugin, for well... Erlang<br>> projects.<br><br>That idea is indeed excellent ! I am a  dedicated maven user and a novice<br>erlang writer, so I would be more than happy to have such a tool. I
<br>have written couple of plugins and artifacts, and even a tutorial on<br>maven. Development of plugins is quite easy if you dont have to delve<br>too deeply in maven's API which is severely underdocumented.</blockquote>

<div><br>I believe (and hope) such delving will not be necessary (maven's documentation does not necessarily lack, but is seldom easy to find)<br></div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
><br>> Things that such a plugin could provide :
<br>> - "archetype" project creation (creates a typical OTP-like erlang project<br>> directory structure and basic files - a way to enforce good pratices in this<br>> area ?)<br><br>Easy to do once a common setup is agreed upon. AFAIK, OTP proposes
<br>such a framework with its applications ?</blockquote><div><br>If we take a look at various OTP applications, the common directory structure seems to be :<br><br>application/<br>|-> src/ (source files, flat)<br>|-> include/ (include files...)
<br>|-> doc/ (documentation)<br>|-> ebin/ (beam files)<br> <br>I don't know wheter to keep this structure intact (just adding a pom.xml file in the base directory, and directories for test files and website generation), or to have a more "mavenish" setup, such as :
<br><br>application/<br>|-> pom.xml (maven project descriptor)<br>|-> src/<br>  |-> main/<br>    |-> erlang/ (erlang source files)<br>    |-> c/ (C code for ports, etc.)<br>    |-> include/<br>  |-> test/
<br>    |-> erlang/ (erlang test files)<br>    |-> c/ (C test files)<br>  |-> site/<br>    |-> site.xml (maven site descriptor)<br>    |-> etc.<br>|-> target/<br>  |-> ebin/<br>  |-> test-ebin/<br>
<br>This last structure ***could*** be useful in a multi-language project, and has various other advantages from a maven point of view. And of course the application can be deployed using the standard OTP structure.<br>Bottom line : I don't know what to choose :)
<br></div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">> - dependencies management (automatic update from a repository, transitive
<br>> dependencies, etc.)<br><br>Tricky as you need a central repository to work with for common<br>artifacts. Easy for custom ones of course.</blockquote><div><br>I agree, though integration with REPOS should be possible and greatly ease things up.
<br></div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">> - run the entire test suite (using EUnit)<br>> - generate various reports and the project web site (edoc, eunit results,
<br>> changelogs, etc.)<br><br>THat's the real added value of maven<br><br>> - project compilation<br>> - project deployment (beam files are packaged and deployed with scp, ftp or<br>> DAV)<br><br>Standard.<br>

<br>> - dynamic code loading (typical Erlang feature of course. You could load the<br>> compiled code on one or more nodes, on your integration or production<br>> environment, etc.)<br><br>Maybe a plugin to (<a href="http://cargo.codehaus.org" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">

http://cargo.codehaus.org</a>) Cargo ?</blockquote><div><br>I was thinking more in the lines of an already running integration or production node, but Cargo seems to be a good idea, though.<br>Of course, dynamic code loading would only work with applications which respect the OTP design guidelines (using supervisors and workers).
<br></div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">> - etc ?<br>><br>> I wonder if there are other Maven users among us. Anyway feedback
<br>> and ideas<br><br>Here they are :-)<br><br>> would be greatly appreciated (maybe something like this already
<br>> exists, or<br><br>I have been told that some plugins exist for ruby and native<br>code. have a look at codehaus.</blockquote><div><br>Codehaus is indeed a good place to look at exemples :) Thanks.<br> </div><br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">BTW, an added benefit I can see to this idea is the possibility that<br>it could foster wider adoption of erlang in Java/j2ee environments and
<br>more generally in enterprise management systems. I am not a master of<br>erlang but I am already amazed by the ease with which some tasks are<br>done in erlang when compared to java or other similar settings. Of<br>course, concurrency and distribution are known strengths of erlang but
<br>even data handling seem easier.<br><br>May be something could be started ? I am ready for discussion a to<br>throw some time in.<br><br>regards,<br>--<br>OQube < software engineering \ génie logiciel ><br>Arnaud Bailly, Dr.
<br>\web> <a href="http://www.oqube.com" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">http://www.oqube.com</a><br><br></blockquote></div><br>