Hi Lars,

The instructions on the site are obscure because they presuppose a good deal of Maven knowledge. Maven helps you to build the project: it puts all the files you need together and at first it feels metaphysical
(hey, will you let me control my own build?).

But here's what I do:

ThingToKnow1: the elements you want to expose, and your sitemap are in the "block". Your "cocoon webapp"
is going to "mount" (my word choice) the blocks on a virtual path.
ThingToKnow2: You control Mavens behaviour through editing pom.xml. Add your Cocoon block as dependency means that you are going to edit the pom.xml.

1. create the webapp from the archetype. The webapp contains close to nothing. It will contain close to nothing. It should contain the "canonical structure" of a web project:
          pom.xml
          main
          main/resources
          main/webapp
          main/webapp/WEB-INF
          main/webapp/WEB-INF/applicationContext.xml
          main/webapp/WEB-INF/log4j.xml
          main/webapp/WEB-INF/web.xml

Edit pom.xml, you will see the section "dependencies". Add the dependency for the block you want to add (I said "mount",
but I guess that is old fashioned).

<dependencies>
<dependency>
<groupId>org.tiaterra</groupId>
<artifactId>myCocoonBlock</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>
</dependencies>

2.  create your block from the archetype

     This will create a structure like:
src
src/test
src/test/resources
src/test/java
src/main
src/main/resources
src/main/resources/COB-INF
src/main/resources/COB-INF/javascript
src/main/resources/COB-INF/xslt
src/main/resources/COB-INF/images
src/main/resources/COB-INF/style
src/main/resources/COB-INF/style/images
src/main/resources/COB-INF/static-content
src/main/resources/META-INF
src/main/resources/META-INF/cocoon
src/main/resources/META-INF/cocoon/spring
src/main/java
src/main/java/org
src/main/java/org/tanteterra

Your site map is at:

src/main/resources/COB-INF/sitemap.xmap

And true, the documentation on the site does not make it easy enough to step
up the threshold and upgrade.
[@group: shouldn't we do something about that. Cocoon is losing its user base, it will end up getting adopted only by a few old people out there. It is gaining momentum on the planet Zork but that's not
going to help us on Earth, is it?]

I hope this helps you on the way. It would make me very happy to know that I am not one of the sole developers on this planet who chose cocoon 3 as a development platform, for the few times in your life that you are in the position to make this choice for your customer! I chose for cocoon 3 because I liked the new architecture. [@group: this can be the start for a tutorial for newbies, someone interested? I feel that the maven integration and the spring part deserve better explanation, they are way too arcane for starters. A tutorial could explain how to get things
done without first studying two other frameworks.]

Kind regards,
Jos Snellings


On 03/01/2012 11:59 PM, Lars Huttar wrote:
Hello,

We've been Cocoon 2.1.* users for years. We're now trying to shift to the Cocoon 3 way of doing things.
I barely understand Maven, but I'm willing to learn.

I've installed Cocoon 3, and can run a sample.

But now I'm having trouble figuring out how to build my own "hello world" web application.

What I did so far:

| svn checkout http:||//svn.apache.org/repos/asf/cocoon/cocoon3/trunk c3|
     cd c3
|   mvn clean install
   cd cocoon-databases-sample
   mvn jetty:run
|

I can then access the running databases sample at
http://localhost:8888/
in the browser.

I've generated the four Maven 2 archetypes as instructed at http://cocoon.apache.org/3.0/download.html
(sample, block, webapp, parent).
I don't understand, though, what each one is for.

For archetype-block, the instruction says "Create an empty Cocoon 3 block in order to create your own Cocoon 3 web application." But once I've done that, what do I do in the generated block in order to create a web application?

For archetype-webapp, it says "Create an empty Java web application project. After that add your Cocoon block as dependency." I guess Cocoon block refers to the previous thing I generated. How do I add it as a dependency? I guess I should edit cocoon-archetype-webapp/pom.xml and add this before </project>:
<dependencies>
<dependency>
<groupId>org.apache.cocoon.archetype-block</groupId>
<artifactId>cocoon-archetype-block</artifactId>
</dependency>
</dependencies>

For archetype-parent, the instruction says "Create a parent module for your Cocoon project." Is a project the same as a web application? Does this mean I should edit the contents of <parent> in archetype-webapp/pom.xml to point correctly to archetype-parent? (The <parent> element is present already, but its groupId, artifactId, and relativePath are a bit off from what would match the parent archetype generated by the instructions.)


**The main thing I want to know, though,** is where do I start building a sitemap? In the working databases sample that I mentioned above, the only place I find a sitemap is under target/samples/COB-INF. But the generated archetype-webapp/ folder doesn't have a target subfolder structure. Is that something I generate using a maven command?

Thanks!
I look forward to using C3, and I feel like if I can get past this point, I'll be able to start cooking.

Lars


Reply via email to