Yes and no, Maven and Ant are both used as build systems, but with different approaches. While I consider Ant more as a scripting language, Maven is the prefered way to manage your project, but it is less flexible. Since Maven integrate Ant, anything you can do with Ant could be achieve with Maven as well. See Apache Commons Jelly for more info.

You should not have to include you library manually. Instead, Merlin will take care of this for you. Merlin and Maven use a similar mechanism to load your library. The exception you got is in one way or another link with this issue.

From memory, here is how it works:
. you install maven
. you point the environment variable MAVEN_REPO to your Maven repository (usually, something like ${Maven_HOME}/repository


Now, when you run Merlin, the Merlin Repository will looks for the MAVEN_REPO variable and build the classloader from the library in it. Maven will force you to respect a certain file structure based on the file name of your jar files. For example, in its simplest form, myApp-1.0.jar will map to ${MAVEN_REPO}/merlin/myApp/jar/myApp-1.0.jar.

When you build and run your app, you have to specify which library to load, both by Maven and Merlin.
For Maven, you insert the dependency in you project.xml file, for Merlin, you insert them in your bock.xml file. Also, when using Maven to build your component, don't ommit the goal "avalon:meta" in your Maven maven.xml file


Here is an example of a Maven project.xml file:

<project>
  <groupId>myApp</groupId>
  <id> myApp</id>
  <name>My App for Test</name>
  <package>net.myApp.test</package>
  <currentVersion>1.0</currentVersion>
  <description>
    A simple App
  </description>
  <dependencies>
    <!-- avalon dependecies -->
    <dependency>
      <groupId>avalon-framework</groupId>
      <artifactId>avalon-framework-api</artifactId>
      <version>4.1.5</version>
    </dependency>
    <dependency>
      <groupId>avalon-framework</groupId>
      <artifactId>avalon-framework-impl</artifactId>
      <version>4.1.5</version>
    </dependency>
    <dependency>
      <groupId>merlin</groupId>
      <artifactId>merlin-unit</artifactId>
      <version>3.3-SNAPSHOT</version>
    </dependency>
    <dependency>
      <id>myAppDependency</id>
      <version>1.0</version>
    </dependency>
    <!-- merlin testing dependencies -->
    <dependency>
      <groupId>merlin</groupId>
      <artifactId>merlin-unit</artifactId>
      <version>3.3-SNAPSHOT</version>
    </dependency>
</project>

Here is an example of a Maven maven.xml file:

<project default="jar:install">
  <preGoal name="java:compile">
    <attainGoal name="avalon:meta"/>
  </preGoal>
</project>

Here is an example of a Merlin project.xml file:

<container name="test">
   <services>
     <service type="net.myApp.test.TestInterface" />
   </services>
   <classloader>
     <classpath>
       <repository>
         <resource id="myAppDependency" version="1.0"/>
       </repository>
     </classpath>
   </classloader>
   <component name="test"
      class="net.myApp.test.TestComponent" />
</container>

Now, your project will have the following file structure:

${myProject}
  /conf/bock.xml
  maven.xml
  project.xml
  src/java
  src/test

Hope this help you to clarify


--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]



Reply via email to