Torsten Schlabach wrote:

Hi again,
I'm going to "test with 2.1.7"... but can somebody clarify what was
changed in in 2.1.8 to obviate the "old way"?  Apparently in 2.1.8, the
"build.sh eclipse-project" is no longer necessary?  Anyway, if someone
cares to provide some hints for me on this, I'd be glad to update the
Wiki.

I am not sure, but ... I think we are collectively making progress on this
list in getting this sorted out.

LOL :-) The fact that it's so difficult to build Eclipse with Cocoon shows how complicated its build system is :-)

Personally, I use:
- svn from the command line
- eclipse-project to build .classpath and .project files
- separate build ("build.sh webapp")
- separate launch ("cocoon.sh servlet")
- debug in Eclipse by connecting to a remote VM started using "cocoon.sh servlet-debug".

Finally, two more things to think about:

- Many people have been reporting that they develop in Eclipse, but then
run Cocoon outside as it is getting pretty slow otherwise. I would presume
this is for memory reasons as Cocoon and Eclipse will share the same VM
(with a -Mx=128M ???) if you run Cocoon inside Eclipse. I haven't found
out how to give the VM that the Eclipse workbench is running in more
memory upfront.

AFAIK, when you launch a program from Eclipse, it creates a new VM.

The reason why I personally have never launched Cocoon from Eclipse is that I have most of the time a Cocoon instance running on my laptop, whose lifecycle is thus decoupled from the lifetime of the IDE.

- It might have advantages to run Cocoon inside Eclipse if we ever manage
to make Eclipse write a class file to the appropriate location in the
webapp and reload it inside Jetty. Imaging you are developing your own
Cocoon component (Transformer, Generator). You make a code change, hit
"Save", the class gets compiled and re-loaded in Jetty and you can do
straigt to your webbrowser, hit Reload there and thus test your component.
Wouldn't that be fun?

It is fun, and you have it *right now* in trunk :-) Just use the classpath-per-sitemap feature in trunk!

Another way of speeding up roundrips when you need to restart Jetty is to use the ParanoidClassloader and give it a parnoid-classpath (in web.xml) that points to the directory where Eclipse writes class files. Here's my paranoid-classpath:
 class-dir: build/eclipse/classes
 lib-dir: build/webapp/WEB-INF/lib

The only thing you've got to take care of (in 2.1.x, not trunk) is to delete cocoon.roles from build/eclipse/classes, so that the full one in WEB-INF/lib (containing all block-defined roles) is used.

You then no more need "build.sh webapp", unless you make changes in configuration files.

Ah, and finally, I use the mount-table matcher a lot to directly test modifications in src/webapp without having to go through the build process. Here's my mount-table.xml:

<mount-table>
 <mount uri-prefix="forms/" src="../../src/blocks/forms/samples/"/>
 <mount uri-prefix="petstore/" src="../../src/blocks/petstore/samples/"/>
 <mount uri-prefix="test/" src="../../src/webapp/samples/test/"/>

 <!-- and a lot more, pointing to prototypes and projects on my HD, thus
      avoiding to copy Cocoon all over the place -->
</mount-table>

Sylvain

--
Sylvain Wallez                        Anyware Technologies
http://people.apache.org/~sylvain     http://www.anyware-tech.com
Apache Software Foundation Member     Research & Technology Director

Reply via email to