From line 2 changed to line 2:
++Maven 2
++Maven
From line 4 changed to line 4:
We chose to use Maven to manage Seam dependencies as not only does it offer good support for transitive dependencies (with support for dependency profiles coming in Maven 2.1 - something *really* needed if you are consuming Seam using Maven), it's also emerging as the de-facto standard both in the Java Enterprise world and at JBoss.org. Further, tools like Ant (using Maven Ant Tasks) and Ivy can consume Maven POMs. Lastly, the 40 votes for publishing Seam to Maven mean that we are going to have to maintain Maven POMs anyway.
We chose to use Maven to manage Seam dependencies as it offers reasonable support for transitive dependencies, it's emerging as the de-facto standard both in the Java Enterprise world and at JBoss.org, tools like Ant (using [Maven Ant Tasks=>http://maven.apache.org/ant-tasks.html]) and Ivy can consume Maven POMs and the 40 odd votes for publishing Seam to Maven pushed us somewhat ;)
From line 6 changed to line 6:
However, we're not in love with using Maven for building software (it seems slow, and incredibly restrictive) so we decided on the half-way house of using Maven Ant Tasks - which are essentially a set of ant tasks that call into Maven. With this, we can use Ant to load dependencies from Maven POM files and publish artifacts to Maven.
+++Using Seam with Maven
From line 8 changed to line 8:
In CVS the Seam build uses Maven pom files to build itself. These pom files are stored in |/build/| and, using some Ant substitution filters, are copied to |classespoms|. From these poms, we can build path's (to compile Seam), fileset's (using the Maven Ant Tasks) and can use the handy version mapper (which allows you to copy a dependency fileset stripping off the version information e.g. |org/jboss/seam/jboss-el/2.0.0.BETA1/jboss-el-2.0.0.BETA1.jar| is copied to |/jboss-el.jar|).
For those Maven pro's among you, here's the essential information to get you started. If you are considering dabbling with Maven, then you might want to wait for a couple of weeks for Seam 2.0.0.GA which will include a brief tutorial on using Maven with Seam.
From line 10 changed to line 10:
++Using Seam with Maven 2
To checkout the support you'll need to add [=>http://snapshots.jboss.org/maven2] as a snapshot repository to your POM; having done this, you can add Seam to your projects POM:
From lines 12 to 15 deleted to line 12:
If you want to checkout the support, you'll need to grab Seam from CVS, and run |ant build| which installs the artifacts into your local repository (once we start deploying snapshots to [=>http://snapshots.jboss.org] you won't need to do this).
Having done this, you can create (or update) your projects POM, and add these artifacts (depending on what support you require):
Having done this, you can create (or update) your projects POM, and add these artifacts (depending on what support you require):
From line 46 changed to line 42:
As Seam is an integration framework we spend a lot of time ensuring that the integrated libraries work well, both together and with Seam. If you want to always use the recommended library versions with Seam you may want to use the Seam root pom (which just declares repositories and dependencyManagement) as your parent pom
We'll shortly start publishing snapshots from our continuous integration server.
From line 48 added to lines 44 to 45:
As Seam is an integration framework we spend a lot of time ensuring that the integrated libraries work well, both together and with Seam. If you want to always use the recommended library versions with Seam you may want to use the Seam root POM (which just declares repositories and dependencyManagement) as your parent POM:
From line 51 changed to line 49:
<version>2.0.0.CR1</version>
<version>2.0.0.SNAPSHOT</version>
From line 54 changed to line 52:
You can then just declare your dependencies versionless in your pom:
You can then just declare your dependencies "versionless" in your POM:
From line 71 changed to line 69:
You'll then get Seam core and ui 2.0.0.CR1 and jBPM jPDL 3.2.1.
You'll then get the SNAPSHOT of Seam core and ui and jBPM jPDL 3.2.1.
From line 73 changed to line 71:
++Examples and Seam-gen
++Maven/Dependency Management Roadmap
From lines 75 to 78 deleted to line 73:
For now we've stuck with using ant for building and declaring the dependencies in the |build.xml|. To do this we copy Seam and it's dependencies (resolved using Maven) to a staging area, and then building the deployable artifacts against this directory. This has the advantage of not having to write POM's for every example (non-trivial given the lack of dependency profiles in Maven).
++Maven\/Dependency Management Roadmap
++Maven\/Dependency Management Roadmap
From line 81 deleted to line 75:
=Start deploying snapshots of Seam to [=>http://snapshots.jboss.org] (over the next few days)
From line 88 changed to line 81:
++Troubleshooting
++Feedback and Troubleshooting
From line 90 changed to line 83:
Of course, there are still some bumps to iron out. If you are having problems:
Whilst this is a good start there a still some bumps to iron out! I'm really hoping for strong (and fast!) feedback on this one to get it just right for the GA.
From line 92 added to lines 85 to 92:
I've got a couple of questions/discussion points for you maven experts out there:
=Is there a way to read external properties into maven? As we're using Maven Ant Tasks we can't use |-Dproperty=foo| and we need to be able to specify the property file relative to the POM's location.
=Is there a nice way to provide dependency profiles *without* putting empty jars all over the place?
=Is using the Seam root POM as your parent POM an acceptable alternative?
If you are following Seam CVS and are having problems building Seam:
=Is there a way to read external properties into maven? As we're using Maven Ant Tasks we can't use |-Dproperty=foo| and we need to be able to specify the property file relative to the POM's location.
=Is there a nice way to provide dependency profiles *without* putting empty jars all over the place?
=Is using the Seam root POM as your parent POM an acceptable alternative?
If you are following Seam CVS and are having problems building Seam:
From line 96 changed to lines 97 to 114:
# Report your problem on the forum
# Report your problem on the forum!
++Maven in Seam
So, how did we use Seam and Maven Ant Tasks to build Seam?
+++Building Seam using Maven
However good Maven is at dependency management, we're not in love with using Maven for building software (it seems slow, and incredibly restrictive) so we decided on the half-way house of using Maven Ant Tasks - which are essentially a set of ant tasks that call into Maven. With this, we can use Ant to load dependencies from Maven POM files and publish artifacts to Maven.
In CVS the Seam build uses Maven POM files to declare dependencies. These pom files are stored in |/build| and, using some Ant substitution filters, are copied to |/classes/poms|. From these poms, we can build path's (to compile Seam), fileset's (using the Maven Ant Tasks) and can use the handy version mapper (which allows you to copy a dependency fileset stripping off the version information e.g. |org/jboss/seam/jboss-el/2.0.0.BETA1/jboss-el-2.0.0.BETA1.jar| is copied to |/jboss-el.jar|).
There is more information in |/build/readme.txt|
+++Examples and Seam-gen
For now we've stuck with using ant for building and declaring the dependencies in the |build.xml|. To do this we copy Seam and it's dependencies (resolved using Maven) to a staging area, and then building the deployable artifacts against this directory. This has the advantage of not having to write POM's for every example (non-trivial given the lack of dependency profiles in Maven).
++Maven in Seam
So, how did we use Seam and Maven Ant Tasks to build Seam?
+++Building Seam using Maven
However good Maven is at dependency management, we're not in love with using Maven for building software (it seems slow, and incredibly restrictive) so we decided on the half-way house of using Maven Ant Tasks - which are essentially a set of ant tasks that call into Maven. With this, we can use Ant to load dependencies from Maven POM files and publish artifacts to Maven.
In CVS the Seam build uses Maven POM files to declare dependencies. These pom files are stored in |/build| and, using some Ant substitution filters, are copied to |/classes/poms|. From these poms, we can build path's (to compile Seam), fileset's (using the Maven Ant Tasks) and can use the handy version mapper (which allows you to copy a dependency fileset stripping off the version information e.g. |org/jboss/seam/jboss-el/2.0.0.BETA1/jboss-el-2.0.0.BETA1.jar| is copied to |/jboss-el.jar|).
There is more information in |/build/readme.txt|
+++Examples and Seam-gen
For now we've stuck with using ant for building and declaring the dependencies in the |build.xml|. To do this we copy Seam and it's dependencies (resolved using Maven) to a staging area, and then building the deployable artifacts against this directory. This has the advantage of not having to write POM's for every example (non-trivial given the lack of dependency profiles in Maven).