<?xml version="1.0"?>
<!--
/*
 * Copyright 2001-2004 The Apache Software Foundation.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
-->

<project>
  <extend>../../../project.xml</extend>
  <id>axis2-xml-guththila</id>
  <name>OM Framework</name>
  <package>axis2.xml.guththila.*</package>
  <description>Guththila project.</description>
  <shortDescription>Guththila project</shortDescription>

  <dependencies>
     <!--dependency>
        <groupId>j2ee</groupId>
        <artifactId>j2ee</artifactId>
        <version>1.3.1</version>
     </dependency-->
  </dependencies>

</project>
