axis-java-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From chinth...@apache.org
Subject svn commit: r368010 [1/2] - in /webservices/axis2/trunk/java: ./ modules/samples/ modules/samples/resources/security/ release-docs/maven-scripts/ release-docs/readme-files/
Date Wed, 11 Jan 2006 11:12:59 GMT
Author: chinthaka
Date: Wed Jan 11 03:12:39 2006
New Revision: 368010

URL: http://svn.apache.org/viewcvs?rev=368010&view=rev
Log:
Applying Azeez's patch related to http://issues.apache.org/jira/browse/AXIS2-369. Thanks (once more.). BTW, it seems better to get rid from you, by making you a committer :))

Modified:
    webservices/axis2/trunk/java/maven.xml
    webservices/axis2/trunk/java/modules/samples/maven.xml
    webservices/axis2/trunk/java/modules/samples/resources/security/README.txt
    webservices/axis2/trunk/java/release-docs/maven-scripts/maven-min.xml
    webservices/axis2/trunk/java/release-docs/maven-scripts/maven-std.xml
    webservices/axis2/trunk/java/release-docs/readme-files/README-min-src.txt
    webservices/axis2/trunk/java/release-docs/readme-files/README-std-src.txt

Modified: webservices/axis2/trunk/java/maven.xml
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/maven.xml?rev=368010&r1=368009&r2=368010&view=diff
==============================================================================
--- webservices/axis2/trunk/java/maven.xml (original)
+++ webservices/axis2/trunk/java/maven.xml Wed Jan 11 03:12:39 2006
@@ -442,8 +442,8 @@
             <ant:fileset file="modules/security/target/security.mar"/>
         </ant:copy>
 
-        <!--<ant:delete dir="target/temp"/>-->
-        <!--<ant:delete dir="target/apidocs"/>-->
+        <ant:delete dir="target/temp"/>
+        <ant:delete dir="target/apidocs"/>
     </goal>
 
     <goal name="init-dist">
@@ -470,7 +470,7 @@
             <ant:fileset dir="${min_dep_cache}"/>
         </ant:copy>
 
-        <!-- Delete tesing jars -->
+        <!-- Delete testing jars -->
         <echo message="Deleting Unwanted testing jars"/>
         <ant:delete>
             <fileset dir="target/temp/min/bin/lib">
@@ -519,6 +519,7 @@
                 <ant:include name="**/modules/xml/**"/>
                 <ant:include name="**/modules/wsdl/**"/>
                 <ant:include name="**/modules/adb/**"/>
+                <ant:exclude name="**/SameServiceAddingTest.java"/> <!-- TODO: This is failing in the distros. Must Fix it. -->
                 <ant:exclude name="**/target/**"/>
                 <ant:exclude name="**/*class*/**"/>
                 <ant:exclude name="**/.svn/**"/>
@@ -651,8 +652,9 @@
                 <ant:include name="**/modules/doom/**"/>
                 <ant:include name="**/modules/addressing/**"/>
                 <ant:include name="**/modules/samples/**"/>
+                <ant:exclude name="**/SameServiceAddingTest.java"/> <!-- TODO: This is failing in the distros. Must Fix it. -->
                 <ant:exclude name="**/target/**"/>
-                <ant:exclude name="**/xdocs/**"/>
+                <ant:exclude name="xdocs/**"/>
                 <ant:exclude name="**/*class*/**"/>
                 <ant:exclude name="**/.svn/**"/>
                 <ant:exclude name="**/bin/**"/>
@@ -674,15 +676,6 @@
             <ant:fileset file="project.xml"/>
         </ant:copy>
 
-        <!-- Copy the samples -->
-        <ant:copy todir="${std.src.temp.dir}/samples">
-            <ant:fileset dir="modules/samples/target/samples">
-                <ant:exclude name="**/*.jar"/>
-                <ant:exclude name="**/*.aar"/>
-                <ant:exclude name="**/*.mar"/>
-            </ant:fileset>
-        </ant:copy>
-
         <!-- Copy the release documents -->
         <macros:copy-release-docs toDir="${std.src.temp.dir}"
                                   readmeFile="release-docs/readme-files/README-std-src.txt"/>
@@ -849,6 +842,8 @@
 
     <define:taglib uri="macros">
         <define:tag name="copy-deps">
+            <ant:echo message="######## MODULES=${mods}"/>
+            <ant:echo message="######## Copy2Dir=${copyToDir}"/>
 
             <j:set var="modules" value="${mods}"/>
 

Modified: webservices/axis2/trunk/java/modules/samples/maven.xml
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/samples/maven.xml?rev=368010&r1=368009&r2=368010&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/samples/maven.xml (original)
+++ webservices/axis2/trunk/java/modules/samples/maven.xml Wed Jan 11 03:12:39 2006
@@ -291,7 +291,6 @@
     <mkdir dir="target/security/client_repo"/>
     <mkdir dir="target/security/client_repo/modules"/>
 
-    <ant:copy file="../security/target/modules/security.mar" tofile="target/toWar/modules/security.mar"/>
     <ant:copy file="../addressing/target/modules/addressing.mar" tofile="target/toWar/modules/addressing.mar"/>
 
     <!-- Copy the sources and others orver to the target/samples/security-->
@@ -300,7 +299,6 @@
          <ant:fileset dir="src/sample/security" />
     </ant:copy>
     <mkdir dir="target/security/client_repo/modules"/>
-    <ant:copy file="../security/target/modules/security.mar" tofile="target/samples/security/client_repo/modules/security.mar"/>
     <ant:copy file="../addressing/target/modules/addressing.mar" tofile="target/samples/security/client_repo/modules/addressing.mar"/>
     <ant:copy file="resources/security/client.axis2.xml" tofile="target/samples/security/client_repo/axis2.xml"/>
     <ant:copy file="target/security/SecureService.aar" tofile="target/samples/security/SecureService.aar"/>

Modified: webservices/axis2/trunk/java/modules/samples/resources/security/README.txt
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/samples/resources/security/README.txt?rev=368010&r1=368009&r2=368010&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/samples/resources/security/README.txt (original)
+++ webservices/axis2/trunk/java/modules/samples/resources/security/README.txt Wed Jan 11 03:12:39 2006
@@ -1,36 +1,40 @@
-Using WS-Security with Axis2
-==============================================================================
-
-This sample uses the WSS4J module with the addressing module to secure the messages as follows:
-
-- First a Timestamp is added to the message and then the Timestamp and the WS-addressing headers are signed with the sender's private key.
-- Then the message body is encrypted with the receiver's public key. 
-- The CipherValue of the encrpted body is included as an MTOM part.
-
-Setup the service
-------------------------------------------------------------------------------
-Please follow each of the following steps:
-
-1.) To engage the security (WSS4J) module add the following line to axis2.xml in axis
-	<module ref="security"/>
-2.) Copy samples/security/SecureService.aar to axis2/WEB-INF/services/ directory
-3.) Copy samples/security/secUtil.jar to axis2/WEB-INF/lib/
-4.) Start Tomcat
-
-Run the sample
-------------------------------------------------------------------------------
-To run the sample client run the securitySample ant task in the ant build file available in the samples directory.
-	$ ant securitySample
-
-Then if everything goes well you will see the following output:
-
-Build file: build.xml
-
-securitySample:
-     [java] Response: <example1:echo xmlns:example1="http://example1.org/example1"><example1:Text>Axis2 Echo String </example1:Text></example1:echo>
-     [java] SecureService Invocation successful :-)
-
-BUILD SUCCESSFUL
-Total time: XX seconds
-
-If you want to see the signed and encrypted messages fireup tcpmon and change the securitySample ant task in the samples directory to set the required port number.
+Using WS-Security with Axis2
+==============================================================================
+
+This sample uses the WSS4J module with the addressing module to secure the messages as follows:
+
+- First a Timestamp is added to the message and then the Timestamp and the WS-addressing headers are signed with the sender's private key.
+- Then the message body is encrypted with the receiver's public key. 
+- The CipherValue of the encrpted body is included as an MTOM part.
+
+Setup the service
+------------------------------------------------------------------------------
+Please follow each of the following steps:
+
+1.) Download the security-0.94.mar from 
+http://ws.apache.org/axis2/modules/%5Bpreferred%5D/ws/axis2/modules/addressing/0_94/security-0.94.mar
+2.) To engage the security (WSS4J) module add the following line to axis2.xml in axis
+	<module ref="security"/>
+3.) Copy samples/security/SecureService.aar to axis2/WEB-INF/services/ directory
+4.) Copy samples/security/secUtil.jar to axis2/WEB-INF/lib/
+5.) Copy the downloaded security-0.94.mar to Axis2/WEB-INF/modules/ directory
+6.) Copy the downloaded security-0.94.mar to samples/security/client_repo/modules/ directory
+7.) Start Tomcat
+
+Run the sample
+------------------------------------------------------------------------------
+To run the sample client run the securitySample ant task in the ant build file available in the samples directory.
+	$ ant securitySample
+
+Then if everything goes well you will see the following output:
+
+Build file: build.xml
+
+securitySample:
+     [java] Response: <example1:echo xmlns:example1="http://example1.org/example1"><example1:Text>Axis2 Echo String </example1:Text></example1:echo>
+     [java] SecureService Invocation successful :-)
+
+BUILD SUCCESSFUL
+Total time: XX seconds
+
+If you want to see the signed and encrypted messages fireup tcpmon and change the securitySample ant task in the samples directory to set the required port number.

Modified: webservices/axis2/trunk/java/release-docs/maven-scripts/maven-min.xml
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/release-docs/maven-scripts/maven-min.xml?rev=368010&r1=368009&r2=368010&view=diff
==============================================================================
--- webservices/axis2/trunk/java/release-docs/maven-scripts/maven-min.xml (original)
+++ webservices/axis2/trunk/java/release-docs/maven-scripts/maven-min.xml Wed Jan 11 03:12:39 2006
@@ -1,429 +1,565 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-/*
- * 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.
- */
- -->
-
-<!--
-     | The main goals for multi project build are:
-     |
-     | default
-     |    Build all the modules
-     |
-     | clean
-     |    Deletes the 'target' directory in all projects
-
-     | clean-repo
-     |    Deletes the 'target' directory in all projects
-     |
-   -->
-
-<project default="jar"
-         xmlns:j="jelly:core"
-         xmlns:u="jelly:util"
-         xmlns:deploy="deploy"
-         xmlns:modules="local:modules"
-         xmlns:ant="jelly:ant"
-         xmlns:plugin="plugin"
-         xmlns:macros="macros"
-         xmlns:maven="jelly:maven"
-         xmlns:define="jelly:define">
-
-    <j:set var="dist.name" value="${pom.artifactId}-${pom.currentVersion}"/>
-    <j:set var="dist.dir" value="target/dist"/>
-
-    <preGoal name="modules:reactor:init">
-        <j:set var="groupId" value="maven-itest-plugin"/>
-        <j:set var="artifactId" value="maven-itest-plugin"/>
-        <j:set var="version" value="1.0"/>
-        <attainGoal name="plugin:download-artifact"/>
-        <maven:installPlugin
-                file="${maven.repo.local}/${groupId}/plugins/${artifactId}-${version}.jar"
-                cache="true"/>
-    </preGoal>
-
-    <preGoal name="build:start">
-        <property name="modules" value="core,common,xml,wsdl,adb" />
-    </preGoal>
-
-    <!-- ======= -->
-    <!-- Modules -->
-    <!-- ======= -->
-    <goal name="modules:reactor:init">
-        <!--
-           | Determine the includes which the reactor will use.
-           |
-           | Uses 4 properties to control which modules will be include:
-           |
-           | module.types      Comma seperated list of module types (ie. specs or modules)
-           | module.includes   Comma seperated list of module names (ie. common, core, ...)
-           | modules           Same as module.includes, module.includes initializes to this value
-           | module.excludes   Comma seperated list of module names to exclude
-           |
-           | The end result is that modules.reactor.includes is set to the project.xml files
-           | to include.  This is the value the reactor will use.
-           |
-           | Example, to only build the common and core modules:
-           |
-           | maven -Dmodules=common,core
-         -->
-
-        <j:if test="${context.getVariable('module.types') == null}">
-            <j:set var="module.types" value="modules,applications,plugins"/>
-        </j:if>
-
-        <j:if test="${context.getVariable('modules') == null}">
-            <!-- The default is to build everything -->
-            <j:set var="modules" value="*"/>
-        </j:if>
-
-        <j:if test="${context.getVariable('module.includes') == null}">
-            <j:set var="module.includes" value="${modules}"/>
-        </j:if>
-
-        <j:if test="${context.getVariable('module.excludes') == null}">
-            <j:set var="module.excludes" value=""/>
-        </j:if>
-
-        <u:tokenize var="types" delim=",">${module.types}</u:tokenize>
-
-        <ant:fileScanner var="scanner">
-            <ant:fileset dir="${basedir}">
-                <j:forEach var="type" items="${types}">
-                    <j:choose>
-                        <j:when test="${context.getVariable('module.includes') == '*'}">
-                            <ant:include name="${type}/*/project.xml"/>
-                        </j:when>
-                        <j:otherwise>
-                            <u:tokenize var="includes" delim=",">${module.includes}</u:tokenize>
-                            <j:forEach var="include" items="${includes}">
-                                <u:available file="${basedir}/${type}/${include}/project.xml">
-                                    <ant:include name="${type}/${include}/project.xml"/>
-                                </u:available>
-                            </j:forEach>
-                        </j:otherwise>
-                    </j:choose>
-
-                    <j:choose>
-                        <j:when test="${context.getVariable('module.excludes') == '*'}">
-                            <ant:exclude name="${type}/*/project.xml"/>
-                        </j:when>
-                        <j:otherwise>
-                            <u:tokenize var="excludes" delim=",">${module.excludes}</u:tokenize>
-                            <j:forEach var="exclude" items="${excludes}">
-                                <u:available file="${basedir}/${type}/${exclude}/project.xml">
-                                    <ant:exclude name="${type}/${exclude}/project.xml"/>
-                                </u:available>
-                            </j:forEach>
-                        </j:otherwise>
-                    </j:choose>
-                </j:forEach>
-            </ant:fileset>
-        </ant:fileScanner>
-
-        <!-- Setup the includes which will be used by the reactor -->
-        <j:forEach var="file" items="${scanner.iterator()}">
-            <!--
-               | Would be nice if reactor would take a file set, but for now just remove
-               | the baseddir portion of the file's name.  So this will essentially strip off
-               | ${basedir}
-             -->
-            <j:set var="directory"
-                   value="${file.parentFile.parentFile.name}/${file.parentFile.name}"/>
-            <j:set var="filename" value="${directory}/${file.name}"/>
-            <j:choose>
-                <j:when test="${context.getVariable('modules.reactor.includes') == null}">
-                    <j:set var="modules.directories" value="${directory}"/>
-                    <j:set var="modules.reactor.includes" value="${filename}"/>
-                </j:when>
-                <j:otherwise>
-                    <j:set var="modules.directories" value="${modules.directories},${directory}"/>
-                    <j:set var="modules.reactor.includes"
-                           value="${modules.reactor.includes},${filename}"/>
-                </j:otherwise>
-            </j:choose>
-        </j:forEach>
-    </goal>
-
-    <!-- Helper tags for modules -->
-    <define:taglib uri="local:modules">
-        <define:tag name="reactor">
-            <attainGoal name="modules:reactor:init"/>
-
-            <j:choose>
-                <j:when test="${goals != null}">
-                    <maven:reactor
-                            basedir="${basedir}"
-                            includes="${modules.reactor.includes}"
-                            banner="Executing (${goals}):"
-                            ignoreFailures="false"
-                            goals="${goals}"
-                            postProcessing="true"
-                            />
-                </j:when>
-                <j:when test="${goals == null}">
-                    <maven:reactor
-                            basedir="${basedir}"
-                            includes="${modules.reactor.includes}"
-                            banner="Executing (${goals}):"
-                            ignoreFailures="false"
-                            postProcessing="true"
-                            />
-                </j:when>
-            </j:choose>
-
-            <!-- Set reactor projects in parent scope so goals have access to it -->
-            <j:set var="reactorProjects" value="${reactorProjects}" scope="parent"/>
-        </define:tag>
-    </define:taglib>
-
-    <goal name="m:init">
-        <ant:fileScanner var="scanner">
-            <ant:fileset dir="${basedir}">
-                <u:tokenize var="includes" delim=",">${maven.multiproject.includes}</u:tokenize>
-                <j:forEach var="include" items="${includes}">
-                    <ant:include name="${include}"/>
-                </j:forEach>
-                <u:tokenize var="excludes" delim=",">${maven.multiproject.excludes}</u:tokenize>
-                <j:forEach var="exclude" items="${excludes}">
-                    <ant:exclude name="${exclude}"/>
-                </j:forEach>
-            </ant:fileset>
-        </ant:fileScanner>
-
-        <j:set var="maven.multiproject.includes" value=""/>
-        <j:set var="maven.multiproject.excludes" value=""/>
-        <j:set var="modules.directories" value=""/>
-
-        <u:tokenize var="moduleList" delim=",">${modules}</u:tokenize>
-        <j:set var="currentDir" value="${basedir}/"/>
-        <j:forEach var="file" items="${scanner.iterator()}">
-            <j:set var="directory" value="${file.parentFile.absolutePath}"/>
-            <j:set var="include" value="${file.absolutePath.substring(currentDir.length())}"/>
-            <j:if test="${moduleList.isEmpty() || moduleList.contains(file.parentFile.name)}">
-                <j:choose>
-                    <j:when test="${context.getVariable('maven.multiproject.includes') == ''}">
-                        <j:set var="modules.directories" value="${directory}"/>
-                        <j:set var="maven.multiproject.includes" value="${include}"/>
-                    </j:when>
-                    <j:otherwise>
-                        <j:set var="modules.directories"
-                               value="${modules.directories},${directory}"/>
-                        <j:set var="maven.multiproject.includes"
-                               value="${maven.multiproject.includes},${include}"/>
-                    </j:otherwise>
-                </j:choose>
-            </j:if>
-        </j:forEach>
-    </goal>
-
-    <goal name="jar:jar">
-        <attainGoal name="create-jar"/>
-        <ant:copy file="target/lib/axis2-${pom.currentVersion}.jar"
-                  toDir="target/"/>
-    </goal>
-
-    <goal name="jar">
-        <attainGoal name="multiproject:install"/>
-        <attainGoal name="jar:install"/>
-    </goal>
-
-    <goal name="init">
-        <ant:mkdir dir="target"/>
-        <ant:mkdir dir="${dist.dir}"/>
-        <ant:mkdir dir="target/lib"/>
-
-        <uptodate property="jars.uptodate" targetfile="target/axis2-${pom.currentVersion}.war">
-            <srcfiles dir="modules">
-                <include name="**/*.java"/>
-                <include name="**/*.xml"/>
-                <include name="**/*.wsdl"/>
-                <exclude name="**/target/**"/>
-            </srcfiles>
-        </uptodate>
-        <echo message="the files are up to date = ${jars.uptodate}"></echo>
-    </goal>
-
-    <goal name="modules:clean">
-        <attainGoal name="modules:reactor:init"/>
-        <u:tokenize var="directories" delim=",">${modules.directories}</u:tokenize>
-        <j:forEach var="directory" items="${directories}">
-            <ant:echo>+----------------------------------------</ant:echo>
-            <ant:echo>| Cleaning: ${directory}</ant:echo>
-            <ant:echo>+----------------------------------------</ant:echo>
-            <ant:delete dir="${directory}/target"/>
-            <ant:delete quiet="false" failonerror="false">
-                <ant:fileset dir="${directory}">
-                    <ant:include name="maven.log"/>
-                    <ant:include name="velocity.log*"/>
-                    <ant:include name="junit*.properties"/>
-                    <ant:include name="axis.log"/>
-                    <ant:include name="junit*.properties"/>
-                    <ant:include name="temp.properties"/>
-                </ant:fileset>
-            </ant:delete>
-            <ant:echo></ant:echo>
-        </j:forEach>
-        <ant:echo>+----------------------------------------</ant:echo>
-        <ant:echo>| Cleaning: target and etc/target</ant:echo>
-        <ant:echo>+----------------------------------------</ant:echo>
-        <ant:delete dir="target"/>
-        <ant:delete dir="etc/target"/>
-    </goal>
-
-    <goal name="clean">
-        <ant:delete dir="${user.home}/.axis2"/>
-        <ant:delete dir="${user.home}/.axis2home"/>
-        <attainGoal name="modules:clean"/>
-        <attainGoal name="clean-repo"/>
-    </goal>
-
-    <!-- ================================================================ -->
-    <!--- Clean the Repository -->
-    <!-- ================================================================ -->
-    <goal name="clean-repo">
-        <ant:delete>
-            <ant:fileset dir="${maven.repo.local}">
-                <ant:include name="axis/jars/axis2*.jar"/>
-            </ant:fileset>
-        </ant:delete>
-    </goal>
-
-    <goal name="all-tests">
-        <modules:reactor goals="jar:install,test,itest"/>
-    </goal>
-
-    <goal name="cleanse-sources">
-        <modules:reactor goals="cleanse-sources"/>
-    </goal>
-
-    <goal name="clover">
-        <modules:reactor goals="clover:on,jar:install,test"/>
-        <attainGoal name="clover:merge"/>
-        <attainGoal name="clover:report"/>
-    </goal>
-
-    <goal name="create-jar" prereqs="init">
-        <jar destfile="target/lib/axis2-${pom.currentVersion}.jar">
-            <fileset dir="modules/core/target/classes"/>
-            <fileset dir="modules/common/target/classes"/>
-            <fileset dir="modules/xml/target/classes"/>
-            <fileset dir="modules/wsdl/target/classes"/>
-            <fileset dir="modules/adb/target/classes"/>
-        </jar>
-    </goal>
-
-    <goal name="create-lib">
-        <macros:copy-deps copyToDir="${target/lib}"/>
-    </goal>
-
-
-    <!-- ================================================================ -->
-    <!--- Create the Java Docs -->
-    <!-- ================================================================ -->
-
-    <goal name="javadocs" prereqs="init, create-lib">
-        <ant:javadoc packagenames="org.apache.axis2.*"
-                     defaultexcludes="yes"
-                     destdir="target/apidocs"
-                     author="true"
-                     version="true"
-                     use="true"
-                     windowtitle="Axis2 API">
-            <ant:sourcepath>
-                <ant:pathelement location="modules/adb/src"/>
-                <ant:pathelement location="modules/common/src"/>
-                <ant:pathelement location="modules/core/src"/>
-                <ant:pathelement location="modules/wsdl/src"/>
-                <ant:pathelement location="modules/xml/src"/>
-            </ant:sourcepath>
-            <ant:classpath>
-                <ant:fileset dir="target/lib">
-                    <ant:include name="**/*.jar"/>
-                </ant:fileset>
-            </ant:classpath>
-            <ant:excludepackage name="org.apache.axis2.tool.codegen.*"/>
-            <ant:excludepackage name="org.apache.axis2.tool.service.*"/>
-        </ant:javadoc>
-    </goal>
-
-    <!-- ================================================================ -->
-    <!--- Reports -->
-    <!-- ================================================================ -->
-    <!-- Conditionally disable linkcheck based on a property. -->
-
-    <postGoal name="xdoc:register-reports">
-        <j:if test="${maven.allreports.disable}">
-            <echo>Reports are disabled. Deregistering all the reports ....</echo>
-            <attainGoal name="maven-linkcheck-plugin:deregister"/>
-            <echo>linkcheck is disabled.</echo>
-            <attainGoal name="maven-checkstyle-plugin:deregister"/>
-            <echo>checkstyle is disabled.</echo>
-            <attainGoal name="maven-changes-plugin:deregister"/>
-            <echo>changes is disabled.</echo>
-            <attainGoal name="maven-changelog-plugin:deregister"/>
-            <echo>changelog is disabled.</echo>
-            <attainGoal name="maven-license-plugin:deregister"/>
-            <echo>license is disabled.</echo>
-            <attainGoal name="maven-javadoc-plugin:deregister"/>
-            <echo>javadoc is disabled.</echo>
-            <attainGoal name="maven-junit-report-plugin:deregister"/>
-            <echo>junit-report is disabled.</echo>
-            <attainGoal name="maven-tasklist-plugin:deregister"/>
-            <echo>tasklist is disabled.</echo>
-        </j:if>
-
-    </postGoal>
-
-
-    <!-- ================================================================ -->
-    <!--- Create JUnit test reports -->
-    <!-- ================================================================ -->
-    <goal name="test-reports">
-        <mkdir dir="${basedir}/target/test-reports"/>
-        <ant:junitreport todir="${basedir}/target/test-reports">
-            <ant:fileset dir="${basedir}/">
-                <ant:include name="**/test-reports/TEST-*.xml"/>
-                <ant:include name="**/itest-reports/TEST-*.xml"/>
-            </ant:fileset>
-            <ant:report format="frames" todir="${basedir}/target/test-reports"
-                        styledir="${basedir}/etc"/>
-        </ant:junitreport>
-    </goal>
-
-    <define:taglib uri="macros">
-        <define:tag name="copy-deps">
-            <j:if test="${context.getVariable('modules') != null}">
-                <property name="modules" value="${modules}"/>
-            </j:if>
-            <attainGoal name="modules:reactor:init"/>
-            <ant:echo message="Fetching Dependencies for modules: ${modules.reactor.includes}"/>
-            <maven:reactor
-                    basedir="${basedir}"
-                    postProcessing="true"
-                    includes="${modules.reactor.includes}"
-                    banner="Executing (${goals}):"
-                    ignoreFailures="false"/>
-            <j:forEach var="x" items="${reactorProjects}">
-                <ant:echo message="Copying ${x} to ${copyToDir}"/>
-                <deploy:copy-deps todir="${copyToDir}"
-                                  projectDescriptor="${x.getFile()}"/>
-            </j:forEach>
-            <property name="modules" value="*"/>
-        </define:tag>
-    </define:taglib>
-</project>
-
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+ * 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.
+ */
+ -->
+
+<!--
+     | The main goals for multi project build are:
+     |
+     | default
+     |    Build all the modules
+     |
+     | clean
+     |    Deletes the 'target' directory in all projects
+
+     | clean-repo
+     |    Deletes the 'target' directory in all projects
+     |
+   -->
+
+<project default="jar"
+         xmlns:j="jelly:core"
+         xmlns:u="jelly:util"
+         xmlns:deploy="deploy"
+         xmlns:modules="local:modules"
+         xmlns:ant="jelly:ant"
+         xmlns:plugin="plugin"
+         xmlns:macros="macros"
+         xmlns:maven="jelly:maven"
+         xmlns:define="jelly:define">
+
+    <j:set var="dist.name" value="${pom.artifactId}-${pom.currentVersion}"/>
+    <j:set var="dist.dir" value="target/dist"/>
+
+    <tstamp>
+        <format property="release_date" pattern="MMMM d, yyyy" locale="en"/>
+    </tstamp>
+
+    <preGoal name="modules:reactor:init">
+        <j:set var="groupId" value="maven-itest-plugin"/>
+        <j:set var="artifactId" value="maven-itest-plugin"/>
+        <j:set var="version" value="1.0"/>
+        <attainGoal name="plugin:download-artifact"/>
+        <maven:installPlugin
+                file="${maven.repo.local}/${groupId}/plugins/${artifactId}-${version}.jar"
+                cache="true"/>
+    </preGoal>
+
+    <preGoal name="build:start">
+        <property name="modules" value="core,common,xml,wsdl,adb"/>
+    </preGoal>
+
+    <!-- ======= -->
+    <!-- Modules -->
+    <!-- ======= -->
+    <goal name="modules:reactor:init">
+        <!--
+           | Determine the includes which the reactor will use.
+           |
+           | Uses 4 properties to control which modules will be include:
+           |
+           | module.types      Comma seperated list of module types (ie. specs or modules)
+           | module.includes   Comma seperated list of module names (ie. common, core, ...)
+           | modules           Same as module.includes, module.includes initializes to this value
+           | module.excludes   Comma seperated list of module names to exclude
+           |
+           | The end result is that modules.reactor.includes is set to the project.xml files
+           | to include.  This is the value the reactor will use.
+           |
+           | Example, to only build the common and core modules:
+           |
+           | maven -Dmodules=common,core
+         -->
+
+        <j:if test="${context.getVariable('module.types') == null}">
+            <j:set var="module.types" value="modules,applications,plugins"/>
+        </j:if>
+
+        <j:if test="${context.getVariable('modules') == null}">
+            <!-- The default is to build everything -->
+            <j:set var="modules" value="*"/>
+        </j:if>
+
+        <j:if test="${context.getVariable('module.includes') == null}">
+            <j:set var="module.includes" value="${modules}"/>
+        </j:if>
+
+        <j:if test="${context.getVariable('module.excludes') == null}">
+            <j:set var="module.excludes" value=""/>
+        </j:if>
+
+        <u:tokenize var="types" delim=",">${module.types}</u:tokenize>
+
+        <ant:fileScanner var="scanner">
+            <ant:fileset dir="${basedir}">
+                <j:forEach var="type" items="${types}">
+                    <j:choose>
+                        <j:when test="${context.getVariable('module.includes') == '*'}">
+                            <ant:include name="${type}/*/project.xml"/>
+                        </j:when>
+                        <j:otherwise>
+                            <u:tokenize var="includes" delim=",">${module.includes}</u:tokenize>
+                            <j:forEach var="include" items="${includes}">
+                                <u:available file="${basedir}/${type}/${include}/project.xml">
+                                    <ant:include name="${type}/${include}/project.xml"/>
+                                </u:available>
+                            </j:forEach>
+                        </j:otherwise>
+                    </j:choose>
+
+                    <j:choose>
+                        <j:when test="${context.getVariable('module.excludes') == '*'}">
+                            <ant:exclude name="${type}/*/project.xml"/>
+                        </j:when>
+                        <j:otherwise>
+                            <u:tokenize var="excludes" delim=",">${module.excludes}</u:tokenize>
+                            <j:forEach var="exclude" items="${excludes}">
+                                <u:available file="${basedir}/${type}/${exclude}/project.xml">
+                                    <ant:exclude name="${type}/${exclude}/project.xml"/>
+                                </u:available>
+                            </j:forEach>
+                        </j:otherwise>
+                    </j:choose>
+                </j:forEach>
+            </ant:fileset>
+        </ant:fileScanner>
+
+        <!-- Setup the includes which will be used by the reactor -->
+        <j:forEach var="file" items="${scanner.iterator()}">
+            <!--
+               | Would be nice if reactor would take a file set, but for now just remove
+               | the baseddir portion of the file's name.  So this will essentially strip off
+               | ${basedir}
+             -->
+            <j:set var="directory"
+                   value="${file.parentFile.parentFile.name}/${file.parentFile.name}"/>
+            <j:set var="filename" value="${directory}/${file.name}"/>
+            <j:choose>
+                <j:when test="${context.getVariable('modules.reactor.includes') == null}">
+                    <j:set var="modules.directories" value="${directory}"/>
+                    <j:set var="modules.reactor.includes" value="${filename}"/>
+                </j:when>
+                <j:otherwise>
+                    <j:set var="modules.directories" value="${modules.directories},${directory}"/>
+                    <j:set var="modules.reactor.includes"
+                           value="${modules.reactor.includes},${filename}"/>
+                </j:otherwise>
+            </j:choose>
+        </j:forEach>
+    </goal>
+
+    <!-- Helper tags for modules -->
+    <define:taglib uri="local:modules">
+        <define:tag name="reactor">
+            <attainGoal name="modules:reactor:init"/>
+
+            <j:choose>
+                <j:when test="${goals != null}">
+                    <maven:reactor
+                            basedir="${basedir}"
+                            includes="${modules.reactor.includes}"
+                            banner="Executing (${goals}):"
+                            ignoreFailures="false"
+                            goals="${goals}"
+                            postProcessing="true"
+                            />
+                </j:when>
+                <j:when test="${goals == null}">
+                    <maven:reactor
+                            basedir="${basedir}"
+                            includes="${modules.reactor.includes}"
+                            banner="Executing (${goals}):"
+                            ignoreFailures="false"
+                            postProcessing="true"
+                            />
+                </j:when>
+            </j:choose>
+
+            <!-- Set reactor projects in parent scope so goals have access to it -->
+            <j:set var="reactorProjects" value="${reactorProjects}" scope="parent"/>
+        </define:tag>
+    </define:taglib>
+
+    <goal name="m:init">
+        <ant:fileScanner var="scanner">
+            <ant:fileset dir="${basedir}">
+                <u:tokenize var="includes" delim=",">${maven.multiproject.includes}</u:tokenize>
+                <j:forEach var="include" items="${includes}">
+                    <ant:include name="${include}"/>
+                </j:forEach>
+                <u:tokenize var="excludes" delim=",">${maven.multiproject.excludes}</u:tokenize>
+                <j:forEach var="exclude" items="${excludes}">
+                    <ant:exclude name="${exclude}"/>
+                </j:forEach>
+            </ant:fileset>
+        </ant:fileScanner>
+
+        <j:set var="maven.multiproject.includes" value=""/>
+        <j:set var="maven.multiproject.excludes" value=""/>
+        <j:set var="modules.directories" value=""/>
+
+        <u:tokenize var="moduleList" delim=",">${modules}</u:tokenize>
+        <j:set var="currentDir" value="${basedir}/"/>
+        <j:forEach var="file" items="${scanner.iterator()}">
+            <j:set var="directory" value="${file.parentFile.absolutePath}"/>
+            <j:set var="include" value="${file.absolutePath.substring(currentDir.length())}"/>
+            <j:if test="${moduleList.isEmpty() || moduleList.contains(file.parentFile.name)}">
+                <j:choose>
+                    <j:when test="${context.getVariable('maven.multiproject.includes') == ''}">
+                        <j:set var="modules.directories" value="${directory}"/>
+                        <j:set var="maven.multiproject.includes" value="${include}"/>
+                    </j:when>
+                    <j:otherwise>
+                        <j:set var="modules.directories"
+                               value="${modules.directories},${directory}"/>
+                        <j:set var="maven.multiproject.includes"
+                               value="${maven.multiproject.includes},${include}"/>
+                    </j:otherwise>
+                </j:choose>
+            </j:if>
+        </j:forEach>
+    </goal>
+
+    <goal name="jar:jar">
+        <attainGoal name="create-jar"/>
+        <ant:copy file="target/lib/axis2-${pom.currentVersion}.jar"
+                  toDir="target/"/>
+    </goal>
+
+    <goal name="jar">
+        <attainGoal name="multiproject:install"/>
+        <attainGoal name="jar:install"/>
+    </goal>
+
+    <goal name="init">
+        <ant:mkdir dir="target"/>
+        <ant:mkdir dir="${dist.dir}"/>
+        <ant:mkdir dir="target/lib"/>
+
+        <uptodate property="jars.uptodate" targetfile="target/axis2-${pom.currentVersion}.war">
+            <srcfiles dir="modules">
+                <include name="**/*.java"/>
+                <include name="**/*.xml"/>
+                <include name="**/*.wsdl"/>
+                <exclude name="**/target/**"/>
+            </srcfiles>
+        </uptodate>
+        <echo message="the files are up to date = ${jars.uptodate}"></echo>
+    </goal>
+
+    <goal name="modules:clean">
+        <attainGoal name="modules:reactor:init"/>
+        <u:tokenize var="directories" delim=",">${modules.directories}</u:tokenize>
+        <j:forEach var="directory" items="${directories}">
+            <ant:echo>+----------------------------------------</ant:echo>
+            <ant:echo>| Cleaning: ${directory}</ant:echo>
+            <ant:echo>+----------------------------------------</ant:echo>
+            <ant:delete dir="${directory}/target"/>
+            <ant:delete quiet="false" failonerror="false">
+                <ant:fileset dir="${directory}">
+                    <ant:include name="maven.log"/>
+                    <ant:include name="velocity.log*"/>
+                    <ant:include name="junit*.properties"/>
+                    <ant:include name="axis.log"/>
+                    <ant:include name="junit*.properties"/>
+                    <ant:include name="temp.properties"/>
+                </ant:fileset>
+            </ant:delete>
+            <ant:echo></ant:echo>
+        </j:forEach>
+        <ant:echo>+----------------------------------------</ant:echo>
+        <ant:echo>| Cleaning: target and etc/target</ant:echo>
+        <ant:echo>+----------------------------------------</ant:echo>
+        <ant:delete dir="target"/>
+        <ant:delete dir="etc/target"/>
+    </goal>
+
+    <goal name="clean">
+        <ant:delete dir="${user.home}/.axis2"/>
+        <ant:delete dir="${user.home}/.axis2home"/>
+        <attainGoal name="modules:clean"/>
+        <attainGoal name="clean-repo"/>
+    </goal>
+
+    <!-- ================================================================ -->
+    <!--- Clean the Repository -->
+    <!-- ================================================================ -->
+    <goal name="clean-repo">
+        <ant:delete>
+            <ant:fileset dir="${maven.repo.local}">
+                <ant:include name="axis/jars/axis2*.jar"/>
+            </ant:fileset>
+        </ant:delete>
+    </goal>
+
+    <goal name="all-tests">
+        <modules:reactor goals="jar:install,test,itest"/>
+    </goal>
+
+    <goal name="cleanse-sources">
+        <modules:reactor goals="cleanse-sources"/>
+    </goal>
+
+    <goal name="clover">
+        <modules:reactor goals="clover:on,jar:install,test"/>
+        <attainGoal name="clover:merge"/>
+        <attainGoal name="clover:report"/>
+    </goal>
+
+    <goal name="create-jar" prereqs="init">
+        <jar destfile="target/lib/axis2-${pom.currentVersion}.jar">
+            <fileset dir="modules/core/target/classes"/>
+            <fileset dir="modules/common/target/classes"/>
+            <fileset dir="modules/xml/target/classes"/>
+            <fileset dir="modules/wsdl/target/classes"/>
+            <fileset dir="modules/adb/target/classes"/>
+        </jar>
+    </goal>
+
+    <goal name="create-lib">
+        <macros:copy-deps copyToDir="${target/lib}"/>
+    </goal>
+
+    <!-- ================================================================ -->
+    <!--- Create the Distro -->
+    <!-- ================================================================ -->
+    <goal name="dist-bin" prereqs="jar,init-dist,cache-min-deps">
+        <ant:echo>+----------------------------------------------</ant:echo>
+        <ant:echo>| Creating: Axis2 Minimal Binary Distribution</ant:echo>
+        <ant:echo>+----------------------------------------------</ant:echo>
+
+        <ant:mkdir dir="target/dist"/>
+        <ant:mkdir dir="target/temp/min/bin/lib"/>
+
+        <!-- Copy the 3rd party libs -->
+        <ant:copy toDir="target/temp/min/bin/lib">
+            <ant:fileset dir="${min_dep_cache}"/>
+        </ant:copy>
+
+        <!-- Delete tesing jars -->
+        <echo message="Deleting Unwanted testing jars"/>
+        <ant:delete>
+            <fileset dir="target/temp/min/bin/lib">
+                <include name="**/ant*.jar"/>
+                <include name="**/xmlunit*.jar"/>
+                <include name="**/junit*.jar"/>
+            </fileset>
+        </ant:delete>
+
+        <!-- Create axis2-core.jar -->
+        <jar destfile="target/temp/min/bin/lib/axis2-core-${pom.currentVersion}.jar">
+            <fileset dir="modules/core/target/classes/"/>
+            <fileset dir="modules/common/target/classes/"/>
+            <fileset dir="modules/xml/target/classes/"/>
+            <fileset dir="modules/wsdl/target/classes/"/>
+        </jar>
+
+        <!-- Copy the adb jar -->
+        <ant:copy toDir="target/temp/min/bin/lib">
+            <ant:fileset file="modules/adb/target/axis2-adb-${pom.currentVersion}.jar"/>
+        </ant:copy>
+
+        <ant:mkdir dir="${dist.dir}"/>
+        <ant:zip file="${dist.dir}/axis2-min-${pom.currentVersion}-bin.zip"
+                 basedir="target/temp/min/bin"/>
+        <ant:delete dir="target/temp/min/bin"/>
+    </goal>
+
+    <goal name="init-dist">
+        <ant:filter token="axis2_version" value="${pom.currentVersion}"/>
+        <ant:filter token="release_date" value="${release_date}"/>
+
+        <property name="min_dep_cache" value="target/temp/cache/min"/>
+        <property name="std_dep_cache" value="target/temp/cache/std"/>
+        <property name="war_dep_cache" value="target/temp/cache/war"/>
+
+        <ant:mkdir dir="target/dist"/>
+    </goal>
+
+    <goal name="cache-min-deps" prereqs="init-dist">
+        <ant:mkdir dir="${min_dep_cache}"/>
+        <j:if test="${minDeps.uptodate != 'yes'}">
+            <macros:copy-deps copyToDir="${min_dep_cache}"
+                              mods="core,common,xml,wsdl,adb"/>
+            <property name="minDeps.uptodate" value="yes"/>
+        </j:if>
+    </goal>
+
+    <!-- ================================================================ -->
+    <!--- Create the Java Docs -->
+    <!-- ================================================================ -->
+
+    <goal name="javadocs" prereqs="init, create-lib">
+        <ant:javadoc packagenames="org.apache.axis2.*"
+                     defaultexcludes="yes"
+                     destdir="target/apidocs"
+                     author="true"
+                     version="true"
+                     use="true"
+                     windowtitle="Axis2 API">
+            <ant:sourcepath>
+                <ant:pathelement location="modules/adb/src"/>
+                <ant:pathelement location="modules/common/src"/>
+                <ant:pathelement location="modules/core/src"/>
+                <ant:pathelement location="modules/wsdl/src"/>
+                <ant:pathelement location="modules/xml/src"/>
+            </ant:sourcepath>
+            <ant:classpath>
+                <ant:fileset dir="target/lib">
+                    <ant:include name="**/*.jar"/>
+                </ant:fileset>
+            </ant:classpath>
+            <ant:excludepackage name="org.apache.axis2.tool.codegen.*"/>
+            <ant:excludepackage name="org.apache.axis2.tool.service.*"/>
+        </ant:javadoc>
+    </goal>
+
+    <!-- ================================================================ -->
+    <!--- Reports -->
+    <!-- ================================================================ -->
+    <!-- Conditionally disable linkcheck based on a property. -->
+
+    <postGoal name="xdoc:register-reports">
+        <j:if test="${maven.allreports.disable}">
+            <echo>Reports are disabled. Deregistering all the reports ....</echo>
+            <attainGoal name="maven-linkcheck-plugin:deregister"/>
+            <echo>linkcheck is disabled.</echo>
+            <attainGoal name="maven-checkstyle-plugin:deregister"/>
+            <echo>checkstyle is disabled.</echo>
+            <attainGoal name="maven-changes-plugin:deregister"/>
+            <echo>changes is disabled.</echo>
+            <attainGoal name="maven-changelog-plugin:deregister"/>
+            <echo>changelog is disabled.</echo>
+            <attainGoal name="maven-license-plugin:deregister"/>
+            <echo>license is disabled.</echo>
+            <attainGoal name="maven-javadoc-plugin:deregister"/>
+            <echo>javadoc is disabled.</echo>
+            <attainGoal name="maven-junit-report-plugin:deregister"/>
+            <echo>junit-report is disabled.</echo>
+            <attainGoal name="maven-tasklist-plugin:deregister"/>
+            <echo>tasklist is disabled.</echo>
+        </j:if>
+
+    </postGoal>
+
+
+    <!-- ================================================================ -->
+    <!--- Create JUnit test reports -->
+    <!-- ================================================================ -->
+    <goal name="test-reports">
+        <mkdir dir="${basedir}/target/test-reports"/>
+        <ant:junitreport todir="${basedir}/target/test-reports">
+            <ant:fileset dir="${basedir}/">
+                <ant:include name="**/test-reports/TEST-*.xml"/>
+                <ant:include name="**/itest-reports/TEST-*.xml"/>
+            </ant:fileset>
+            <ant:report format="frames" todir="${basedir}/target/test-reports"
+                        styledir="${basedir}/etc"/>
+        </ant:junitreport>
+    </goal>
+
+    <define:taglib uri="macros">
+        <define:tag name="copy-deps">
+            <j:set var="modules" value="${mods}"/>
+
+            <!-- ######################### REACTOR INIT ##########################################-->
+
+            <j:if test="${context.getVariable('module.types') == null}">
+                <j:set var="module.types" value="modules,applications,plugins"/>
+            </j:if>
+
+            <j:set var="module.includes" value="${modules}"/>
+
+            <j:if test="${context.getVariable('module.excludes') == null}">
+                <j:set var="module.excludes" value=""/>
+            </j:if>
+
+            <u:tokenize var="types" delim=",">${module.types}</u:tokenize>
+
+            <ant:fileScanner var="scanner">
+                <ant:fileset dir="${basedir}">
+                    <j:forEach var="type" items="${types}">
+                        <j:choose>
+                            <j:when test="${context.getVariable('module.includes') == '*'}">
+                                <ant:include name="${type}/*/project.xml"/>
+                            </j:when>
+                            <j:otherwise>
+                                <u:tokenize var="includes" delim=",">${module.includes}</u:tokenize>
+                                <j:forEach var="include" items="${includes}">
+                                    <u:available file="${basedir}/${type}/${include}/project.xml">
+                                        <ant:include name="${type}/${include}/project.xml"/>
+                                    </u:available>
+                                </j:forEach>
+                            </j:otherwise>
+                        </j:choose>
+
+                        <j:choose>
+                            <j:when test="${context.getVariable('module.excludes') == '*'}">
+                                <ant:exclude name="${type}/*/project.xml"/>
+                            </j:when>
+                            <j:otherwise>
+                                <u:tokenize var="excludes" delim=",">${module.excludes}</u:tokenize>
+                                <j:forEach var="exclude" items="${excludes}">
+                                    <u:available file="${basedir}/${type}/${exclude}/project.xml">
+                                        <ant:exclude name="${type}/${exclude}/project.xml"/>
+                                    </u:available>
+                                </j:forEach>
+                            </j:otherwise>
+                        </j:choose>
+                    </j:forEach>
+                </ant:fileset>
+            </ant:fileScanner>
+
+            <j:set var="modules.reactor.includes" value=""/>
+
+            <!-- Setup the includes which will be used by the reactor -->
+            <j:forEach var="file" items="${scanner.iterator()}">
+                <j:set var="directory"
+                       value="${file.parentFile.parentFile.name}/${file.parentFile.name}"/>
+                <j:set var="filename" value="${directory}/${file.name}"/>
+                <j:choose>
+                    <j:when test="${context.getVariable('modules.reactor.includes') == null}">
+                        <j:set var="modules.directories" value="${directory}"/>
+                        <j:set var="modules.reactor.includes" value="${filename}"/>
+                    </j:when>
+                    <j:otherwise>
+                        <j:set var="modules.directories"
+                               value="${modules.directories},${directory}"/>
+                        <j:set var="modules.reactor.includes"
+                               value="${modules.reactor.includes},${filename}"/>
+                    </j:otherwise>
+                </j:choose>
+            </j:forEach>
+            <!-- #################### END OF REACTOR INIT #######################################-->
+
+            <ant:echo message="Fetching Dependencies for modules: ${modules.reactor.includes}"/>
+            <maven:reactor
+                    basedir="${basedir}"
+                    postProcessing="true"
+                    includes="${modules.reactor.includes}"
+                    banner="Executing (${goals}):"
+                    ignoreFailures="false"/>
+            <j:forEach var="x" items="${reactorProjects}">
+                <ant:echo message="Copying ${x} to ${copyToDir}"/>
+                <deploy:copy-deps todir="${copyToDir}"
+                                  projectDescriptor="${x.getFile()}"/>
+            </j:forEach>
+            <property name="modules" value="*"/>
+        </define:tag>
+    </define:taglib>
+</project>
+



Mime
View raw message