You are viewing a plain text version of this content. The canonical link for it is here.
Posted to easyant-commits@incubator.apache.org by hi...@apache.org on 2011/02/17 17:01:56 UTC
svn commit: r1071697 [26/42] - in /incubator/easyant: buildtypes/
buildtypes/trunk/ buildtypes/trunk/build-osgi-bundle-java/
buildtypes/trunk/build-osgi-bundle-java/src/
buildtypes/trunk/build-osgi-bundle-java/src/main/
buildtypes/trunk/build-osgi-bund...
Added: incubator/easyant/core/trunk/src/main/patches/references-antunit-r909330.patch
URL: http://svn.apache.org/viewvc/incubator/easyant/core/trunk/src/main/patches/references-antunit-r909330.patch?rev=1071697&view=auto
==============================================================================
--- incubator/easyant/core/trunk/src/main/patches/references-antunit-r909330.patch (added)
+++ incubator/easyant/core/trunk/src/main/patches/references-antunit-r909330.patch Thu Feb 17 17:01:07 2011
@@ -0,0 +1,611 @@
+Index: ../antunit/docs/antunit.html
+===================================================================
+--- ../antunit/docs/antunit.html (revision 645890)
++++ ../antunit/docs/antunit.html Sat Apr 17 16:13:57 PDT 2010
+@@ -171,6 +171,53 @@
+ href="http://ant.apache.org/manual/CoreTypes/propertyset.html"><propertyset></a>s
+ can be used to pass properties to the build files under test.</p>
+
++ <h4>reference</h4>
++
++ <p>One or more references may be passed to the antunit script. For example, paths and filesets
++ can be defined once in the outer build script and passed through to multiple antunit scripts.</p>
++
++ <table border="1" cellpadding="2" cellspacing="0">
++ <tr>
++ <td valign="top"><b>Attribute</b></td>
++ <td valign="top"><b>Description</b></td>
++ <td align="center" valign="top"><b>Required</b></td>
++ </tr>
++ <tr>
++ <td valign="top">refid</td>
++ <td valign="top">The reference ID to inherit</td>
++ <td align="center" valign="middle" rowspan="2">Exactly one of these</td>
++ </tr>
++ <tr>
++ <td valign="top">regex</td>
++ <td valign="top">A regular expression identifying a group of reference IDs to inherit.</td>
++ </tr>
++ <tr>
++ <td valign="top">torefid</td>
++ <td valign="top">The ID of the reference in the test project. </td>
++ <td align="center" valign="middle" width="25%">No. If this reference appears inside
++ a <a href="#referenceset"><referenceset></a> with a nested mapper element, the mapper
++ will be used to determine the target reference ID. Otherwise, defaults to the source
++ reference ID.</td>
++ </tr>
++ </table>
++
++ <a name="referenceset"/><h4>referenceset</h4>
++
++ <p>References can be grouped inside a <referenceset> element for clarity. Additionally, <referenceset>
++ elements may contain exactly one nested <a href="http://ant.apache.org/manual/CoreTypes/mapper.html"><mapper></a>
++ element, which defines how source reference IDs are translated into target reference IDs. For example,
++
++<pre>
++ <au:antunit>
++ <referenceset>
++ <reference refid="first.ref"/>
++ <reference refid="second.ref"/>
++ <mapper type="regexp" from="(.*)\.ref" to="mapped.ref.\1"/>
++ </referenceset>
++ </au:antunit>
++</pre>
++ </p>
++
+ <h3>Examples</h3>
+
+ <p>This build file snippet (from src/etc/testcases/antunit/base.xml)</p>
+Index: ../antunit/src/etc/testcases/antunit/reference-mapper.xml
+===================================================================
+--- ../antunit/src/etc/testcases/antunit/reference-mapper.xml Sat Apr 17 15:26:27 PDT 2010
++++ ../antunit/src/etc/testcases/antunit/reference-mapper.xml Sat Apr 17 15:26:27 PDT 2010
+@@ -0,0 +1,37 @@
++<?xml version="1.0"?>
++
++<!--
++Licensed to the Apache Software Foundation (ASF) under one
++or more contributor license agreements. See the NOTICE file
++distributed with this work for additional information
++regarding copyright ownership. The ASF licenses this file
++to you 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 name="reference-mapper-test" basedir="." default="all"
++ xmlns:au="antlib:org.apache.ant.antunit">
++
++ <target name="all">
++ <fail>Not a self-contained build file</fail>
++ </target>
++
++ <target name="testReferenceMapper">
++ <property name="ref.one" refid="first.mapped"/>
++ <au:assertEquals expected="${file.separator}first" actual="${ref.one}" />
++
++ <property name="ref.two" refid="second.mapped"/>
++ <au:assertEquals expected="${file.separator}second" actual="${ref.two}" />
++ </target>
++
++</project>
+\ No newline at end of file
+Index: ../antunit/src/main/org/apache/ant/antunit/AntUnit.java
+===================================================================
+--- ../antunit/src/main/org/apache/ant/antunit/AntUnit.java (revision 740452)
++++ ../antunit/src/main/org/apache/ant/antunit/AntUnit.java Sat Apr 17 16:18:59 PDT 2010
+@@ -22,22 +22,19 @@
+
+ import java.io.File;
+ import java.io.IOException;
+-import java.util.ArrayList;
+-import java.util.Iterator;
+-import java.util.List;
+-import java.util.Map;
++import java.lang.reflect.Method;
++import java.util.*;
+
+-import org.apache.tools.ant.BuildEvent;
+-import org.apache.tools.ant.BuildException;
+-import org.apache.tools.ant.BuildListener;
+-import org.apache.tools.ant.MagicNames;
+-import org.apache.tools.ant.Project;
+-import org.apache.tools.ant.ProjectHelper;
+-import org.apache.tools.ant.Task;
++import org.apache.tools.ant.*;
++import org.apache.tools.ant.taskdefs.Ant;
++import org.apache.tools.ant.types.Mapper;
+ import org.apache.tools.ant.types.PropertySet;
+ import org.apache.tools.ant.types.ResourceCollection;
+ import org.apache.tools.ant.types.resources.FileResource;
+ import org.apache.tools.ant.types.resources.Union;
++import org.apache.tools.ant.util.FileNameMapper;
++import org.apache.tools.ant.util.regexp.RegexpMatcher;
++import org.apache.tools.ant.util.regexp.RegexpMatcherFactory;
+
+ /**
+ * Run every target whose name starts with "test" in a set of build files.
+@@ -112,6 +109,11 @@
+ private ArrayList propertySets = new ArrayList();
+
+ /**
++ * Holds references to be inherited by the test project
++ */
++ private ArrayList referenceSets = new ArrayList();
++
++ /**
+ * has a failure occured?
+ */
+ private int failures = 0;
+@@ -160,6 +162,23 @@
+ }
+
+ /**
++ * Add a set of inherited references.
++ */
++ public ReferenceSet createReferenceSet() {
++ ReferenceSet set = new ReferenceSet();
++ referenceSets.add(set);
++ return set;
++ }
++
++ /**
++ * Add an inherited reference
++ */
++ public void addReference(Reference reference) {
++ //wrap in a singleton reference set.
++ createReferenceSet().addReference(reference);
++ }
++
++ /**
+ * Set the name of a property to set if an error or failure occurs.
+ * @param s the name of the error property.
+ */
+@@ -311,6 +330,7 @@
+ p.initProperties();
+ p.setInputHandler(getProject().getInputHandler());
+ getProject().initSubProject(p);
++ //pass through inherited properties
+ for (Iterator outer = propertySets.iterator(); outer.hasNext(); ) {
+ PropertySet set = (PropertySet) outer.next();
+ Map props = set.getProperties();
+@@ -328,6 +348,16 @@
+ }
+ }
+ }
++
++ //pass through inherited references. this code is borrowed with significant
++ //modification from taskdefs.Ant in Ant core. unfortunately the only way we
++ //can share the code directly would be to extend Ant (which might not be a
++ //bad idea?)
++ for (int i = 0; i < referenceSets.size(); ++i) {
++ ReferenceSet set = (ReferenceSet) referenceSets.get(i);
++ set.copyReferencesInto(p);
++ }
++
+ p.setUserProperty(MagicNames.ANT_FILE, f.getAbsolutePath());
+ attachListeners(f, p);
+
+@@ -407,6 +437,181 @@
+ }
+
+ /**
++ * Defines a collection of inherited {@link Reference references},
++ * with an optional nested {@link Mapper} that maps them to new reference IDs
++ * in the target project.
++ */
++ public class ReferenceSet {
++ /**
++ * references inherited from parent project by antunit scripts
++ */
++ private ArrayList references = new ArrayList();
++ /**
++ * maps source reference ID to target reference ID
++ */
++ private Mapper mapper;
++
++ public void addReference(Reference reference) {
++ references.add(reference);
++ }
++
++ public Mapper createMapper() {
++ if (mapper == null) {
++ return mapper = new Mapper(getProject());
++ } else {
++ throw new BuildException("Only one mapper element is allowed per referenceSet", getLocation());
++ }
++ }
++
++ /** configure a single mapper to translate reference IDs */
++ public void setMapper(String typeName, String from, String to) {
++ Mapper mapper = createMapper();
++ Mapper.MapperType type = new Mapper.MapperType();
++ type.setValue(typeName);
++
++ mapper.setType(type);
++ mapper.setFrom(from);
++ mapper.setTo(to);
++ }
++
++ /**
++ * Copy all identified references into the target project, applying any name
++ * mapping required by a nested mapper element.
++ */
++ public void copyReferencesInto(Project newProject) {
++ FileNameMapper mapper = this.mapper == null ? null : this.mapper.getImplementation();
++ HashSet matches = new HashSet();
++ Hashtable src = getProject().getReferences();
++
++ for (Iterator it = references.iterator(); it.hasNext(); ) {
++ Reference ref = (Reference) it.next();
++
++ matches.clear();
++ ref.addMatchingReferences(src, matches);
++
++ for (Iterator ids = matches.iterator(); ids.hasNext(); ) {
++ String refid = (String) ids.next();
++ String toRefid = ref.getToRefid();
++
++ //transform the refid with the mapper if necessary
++ if (mapper != null && toRefid == null) {
++ String[] mapped = mapper.mapFileName(refid);
++ if (mapped != null) {
++ toRefid = mapped[0];
++ }
++ }
++ if (toRefid == null) {
++ toRefid = refid;
++ }
++
++ //clone the reference into the new project
++ copyReference(refid, newProject, toRefid);
++ }
++ }
++ }
++
++ /**
++ * Try to clone and reconfigure the object referenced by oldkey in
++ * the parent project and add it to the new project with the key newkey.
++ * This protects the parent project from modification by the child project.
++ *
++ * <p>If we cannot clone it, copy the referenced object itself and
++ * keep our fingers crossed.</p>
++ * @param oldKey the reference id in the current project.
++ * @param newKey the reference id in the new project.
++ */
++ private void copyReference(String oldKey, Project newProject, String newKey) {
++ Object orig = getProject().getReference(oldKey);
++ if (orig == null) {
++ log("No object referenced by " + oldKey + ". Can't copy to "
++ + newKey,
++ Project.MSG_WARN);
++ return;
++ }
++
++ Class c = orig.getClass();
++ Object copy = orig;
++ try {
++ Method cloneM = c.getMethod("clone", new Class[0]);
++ if (cloneM != null) {
++ copy = cloneM.invoke(orig, new Object[0]);
++ log("Adding clone of reference " + oldKey, Project.MSG_DEBUG);
++ }
++ } catch (Exception e) {
++ // not Clonable
++ }
++
++
++ if (copy instanceof ProjectComponent) {
++ ((ProjectComponent) copy).setProject(newProject);
++ } else {
++ try {
++ Method setProjectM =
++ c.getMethod("setProject", new Class[] {Project.class});
++ if (setProjectM != null) {
++ setProjectM.invoke(copy, new Object[] {newProject});
++ }
++ } catch (NoSuchMethodException e) {
++ // ignore this if the class being referenced does not have
++ // a set project method.
++ } catch (Exception e2) {
++ String msg = "Error setting new project instance for "
++ + "reference with id " + oldKey;
++ throw new BuildException(msg, e2, getLocation());
++ }
++ }
++ newProject.addReference(newKey, copy);
++ }
++
++
++ }
++
++ public static class Reference extends Ant.Reference {
++
++ private String regex;
++ private RegexpMatcher matcher;
++
++ public String getRegex() {
++ return regex;
++ }
++
++ /**
++ * Set a regular expression to match references.
++ * @param regex
++ */
++ public void setRegex(String regex) {
++ this.regex = regex;
++ RegexpMatcherFactory matchMaker = new RegexpMatcherFactory();
++ matcher = matchMaker.newRegexpMatcher();
++ matcher.setPattern(regex);
++ }
++
++ /**
++ * Add to <code>dest</code> any reference IDs in <code>src</code> matching
++ * this reference descriptor
++ * @param src table of references to check
++ * @param dest set of reference IDs matching this reference pattern
++ */
++ public void addMatchingReferences(Hashtable src, Collection dest) {
++ String id = getRefId();
++ if (id != null) {
++ if (src.containsKey(id)) {
++ dest.add(id);
++ }
++ } else if (matcher != null) {
++ for (Iterator it = src.keySet().iterator(); it.hasNext(); ) {
++ String refid = (String)it.next();
++ if (matcher.matches(refid)) {
++ dest.add(refid);
++ }
++ }
++ } else {
++ throw new BuildException("either the refid or regex attribute is required for reference elements");
++ }
++ }
++ }
++
++ /**
+ * Adapts AntUnitListener to BuildListener.
+ */
+ private class BuildToAntUnitListener implements BuildListener {
+Index: ../antunit/src/etc/testcases/antunit/reference-set.xml
+===================================================================
+--- ../antunit/src/etc/testcases/antunit/reference-set.xml Mon Apr 12 20:53:47 PDT 2010
++++ ../antunit/src/etc/testcases/antunit/reference-set.xml Mon Apr 12 20:53:47 PDT 2010
+@@ -0,0 +1,42 @@
++<?xml version="1.0"?>
++
++<!--
++Licensed to the Apache Software Foundation (ASF) under one
++or more contributor license agreements. See the NOTICE file
++distributed with this work for additional information
++regarding copyright ownership. The ASF licenses this file
++to you 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 name="reference-set-test" basedir="." default="all"
++ xmlns:au="antlib:org.apache.ant.antunit">
++
++ <target name="all">
++ <fail>Not a self-contained build file</fail>
++ </target>
++
++ <target name="testReferenceSet">
++ <property name="ref.one" refid="first.ref"/>
++ <au:assertEquals expected="${file.separator}first" actual="${ref.one}" />
++
++ <property name="ref.three" refid="third.ref"/>
++ <au:assertEquals expected="${file.separator}third" actual="${ref.three}" />
++
++ <condition property="uninherited.is.set" value="true">
++ <isreference refid="second.ref"/>
++ </condition>
++ <fail message="Uninherited reference should not be visible" if="uninherited.is.set"/>
++ </target>
++
++</project>
+\ No newline at end of file
+Index: ../antunit/src/etc/testcases/antunit/reference-regex.xml
+===================================================================
+--- ../antunit/src/etc/testcases/antunit/reference-regex.xml Mon Apr 12 20:53:47 PDT 2010
++++ ../antunit/src/etc/testcases/antunit/reference-regex.xml Mon Apr 12 20:53:47 PDT 2010
+@@ -0,0 +1,42 @@
++<?xml version="1.0"?>
++
++<!--
++Licensed to the Apache Software Foundation (ASF) under one
++or more contributor license agreements. See the NOTICE file
++distributed with this work for additional information
++regarding copyright ownership. The ASF licenses this file
++to you 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 name="reference-regex-test" basedir="." default="all"
++ xmlns:au="antlib:org.apache.ant.antunit">
++
++ <target name="all">
++ <fail>Not a self-contained build file</fail>
++ </target>
++
++ <target name="testReferenceRegex">
++ <property name="ref.one" refid="first.ref"/>
++ <au:assertEquals expected="${file.separator}first" actual="${ref.one}" />
++
++ <property name="ref.two" refid="second.ref"/>
++ <au:assertEquals expected="${file.separator}second" actual="${ref.two}" />
++
++ <condition property="uninherited.is.set" value="true">
++ <isreference refid="third.missing"/>
++ </condition>
++ <fail message="Uninherited reference should not be visible" if="uninherited.is.set"/>
++ </target>
++
++</project>
+\ No newline at end of file
+Index: ../antunit/src/tests/junit/org/apache/ant/antunit/AntUnitTest.java
+===================================================================
+--- ../antunit/src/tests/junit/org/apache/ant/antunit/AntUnitTest.java (revision 737355)
++++ ../antunit/src/tests/junit/org/apache/ant/antunit/AntUnitTest.java Sat Apr 17 15:27:51 PDT 2010
+@@ -107,7 +107,23 @@
+ System.setErr(savedErr);
+ }
+ }
+-
++
++ public void testReference() {
++ executeTarget("testReference");
++ }
++
++ public void testReferenceSet() {
++ executeTarget("testReferenceSet");
++ }
++
++ public void testReferenceRegex() {
++ executeTarget("testReferenceRegex");
++ }
++
++ public void testReferenceMapper() {
++ executeTarget("testReferenceMapper");
++ }
++
+ public static class HelloWorld {
+ public static void main(String[] args) {
+ System.out.println("HelloWorld");
+Index: ../antunit/src/etc/testcases/antunit/reference.xml
+===================================================================
+--- ../antunit/src/etc/testcases/antunit/reference.xml Tue Apr 06 22:39:54 PDT 2010
++++ ../antunit/src/etc/testcases/antunit/reference.xml Tue Apr 06 22:39:54 PDT 2010
+@@ -0,0 +1,39 @@
++<?xml version="1.0"?>
++
++<!--
++Licensed to the Apache Software Foundation (ASF) under one
++or more contributor license agreements. See the NOTICE file
++distributed with this work for additional information
++regarding copyright ownership. The ASF licenses this file
++to you 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 name="reference-test" basedir="." default="all"
++ xmlns:au="antlib:org.apache.ant.antunit">
++
++ <target name="all">
++ <fail>Not a self-contained build file</fail>
++ </target>
++
++ <target name="testReference">
++ <property name="ref.string" refid="inherited.ref"/>
++ <au:assertEquals expected="${file.separator}some${path.separator}${file.separator}path${path.separator}${file.separator}value" actual="${ref.string}" />
++
++ <condition property="uninherited.is.set" value="true">
++ <isreference refid="uninherited.ref"/>
++ </condition>
++ <fail message="Uninherited reference should not be visible" if="uninherited.is.set"/>
++ </target>
++
++</project>
+\ No newline at end of file
+Index: ../antunit/src/etc/testcases/antunit.xml
+===================================================================
+--- ../antunit/src/etc/testcases/antunit.xml (revision 737355)
++++ ../antunit/src/etc/testcases/antunit.xml Sat Apr 17 15:50:05 PDT 2010
+@@ -86,7 +86,56 @@
+ <au:plainlistener />
+ </au:antunit>
+ </target>
+-
++
++ <target name="testReference">
++ <path id="inherited.ref" path="/some:/path:/value"/>
++ <path id="uninherited.ref" path="some:other:value"/>
++ <au:antunit>
++ <file file="antunit/reference.xml" />
++ <au:plainlistener />
++ <reference refid="inherited.ref"/>
++ </au:antunit>
++ </target>
++
++ <target name="testReferenceRegex">
++ <path id="first.ref" path="/first"/>
++ <path id="second.ref" path="/second"/>
++ <path id="third.missing" path="ignored"/>
++ <au:antunit>
++ <file file="antunit/reference-regex.xml" />
++ <au:plainlistener />
++ <reference regex=".*\.ref"/>
++ </au:antunit>
++ </target>
++
++ <target name="testReferenceSet">
++ <path id="first.ref" path="/first"/>
++ <path id="second.ref" path="/second"/>
++ <path id="third.ref" path="/third"/>
++ <au:antunit>
++ <file file="antunit/reference-set.xml" />
++ <au:plainlistener />
++ <referenceSet>
++ <reference refid="first.ref"/>
++ <reference refid="third.ref"/>
++ </referenceSet>
++ </au:antunit>
++ </target>
++
++ <target name="testReferenceMapper">
++ <path id="first.ref" path="/first"/>
++ <path id="second.ref" path="/second"/>
++ <au:antunit>
++ <file file="antunit/reference-mapper.xml" />
++ <au:plainlistener />
++ <referenceSet>
++ <reference refid="first.ref"/>
++ <reference refid="second.ref"/>
++ <mapper type="regexp" from="(.*)\.ref" to="\1.mapped"/>
++ </referenceSet>
++ </au:antunit>
++ </target>
++
+ <property name="reportsdir" location="../../../build/reports"/>
+ <target name="antunit-dir">
+ <mkdir dir="${reportsdir}"/>
Added: incubator/easyant/core/trunk/src/main/resources/META-INF/services/org.apache.tools.ant.ProjectHelper
URL: http://svn.apache.org/viewvc/incubator/easyant/core/trunk/src/main/resources/META-INF/services/org.apache.tools.ant.ProjectHelper?rev=1071697&view=auto
==============================================================================
--- incubator/easyant/core/trunk/src/main/resources/META-INF/services/org.apache.tools.ant.ProjectHelper (added)
+++ incubator/easyant/core/trunk/src/main/resources/META-INF/services/org.apache.tools.ant.ProjectHelper Thu Feb 17 17:01:07 2011
@@ -0,0 +1 @@
+org.apache.easyant.core.ant.EasyAntProjectHelper
\ No newline at end of file
Added: incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/antlib.xml
URL: http://svn.apache.org/viewvc/incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/antlib.xml?rev=1071697&view=auto
==============================================================================
--- incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/antlib.xml (added)
+++ incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/antlib.xml Thu Feb 17 17:01:07 2011
@@ -0,0 +1,65 @@
+<?xml version="1.0"?>
+<!--
+ Copyright 2008-2010 the EasyAnt project
+
+ See the NOTICE file distributed with this work for additional information
+ regarding copyright ownership.
+
+ 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.
+-->
+<antlib xmlns:current="ant:current">
+ <taskdef name="path" classname="org.apache.easyant.tasks.PathTask"/>
+ <taskdef name="parameter" classname="org.apache.easyant.tasks.ParameterTask"/>
+
+ <taskdef name="import" classname="org.apache.easyant.tasks.Import"/>
+ <taskdef name="loadmodule" classname="org.apache.easyant.tasks.LoadModule"/>
+ <taskdef name="submodule" classname="org.apache.easyant.tasks.SubModule"/>
+ <taskdef name="repreport" classname="org.apache.easyant.tasks.RepositoryReport"/>
+ <taskdef name="core-version" classname="org.apache.easyant.tasks.CoreRevisionCheckerTask"/>
+ <taskdef name="property" classname="org.apache.easyant.tasks.PropertyTask"/>
+
+ <taskdef name="searchmodule" classname="org.apache.easyant.tasks.SearchModule"/>
+
+ <taskdef name="configure-build-scoped-repository" classname="org.apache.easyant.tasks.ConfigureBuildScopedRepository"/>
+
+ <taskdef name="findclasspath" classname="org.apache.easyant.tasks.findclasspath.FindClasspathTask"/>
+ <typedef name="environment-strategy" classname="org.apache.easyant.tasks.findclasspath.EnvironmentStrategy"/>
+ <typedef name="project-dependency-strategy" classname="org.apache.easyant.tasks.findclasspath.ProjectDependencyStrategy"/>
+ <typedef name="basic-configuration-strategy" classname="org.apache.easyant.tasks.findclasspath.BasicConfigurationStrategy"/>
+
+
+ <taskdef name="registerartifact" classname="org.apache.easyant.tasks.RegisterArtifact"/>
+ <taskdef name="bindtarget" classname="org.apache.easyant.tasks.BindTarget"/>
+
+
+ <taskdef name="checkresolver" classname="org.apache.easyant.tasks.CheckResolver"/>
+ <taskdef name="easyant" classname="org.apache.easyant.tasks.EasyAntRunner"/>
+
+ <taskdef name="startmenu" classname="org.apache.easyant.tasks.menu.StartMenuTask"/>
+ <taskdef name="addmenuentry" classname="org.apache.easyant.tasks.menu.AddMenuEntryTask"/>
+ <taskdef name="registermenugenerator" classname="org.apache.easyant.tasks.menu.RegisterMenuGeneratorTask"/>
+ <typedef name="menuentry" classname="org.apache.easyant.tasks.menu.MenuEntry"/>
+ <taskdef name="endmenu" classname="org.apache.easyant.tasks.menu.EndMenuTask"/>
+
+ <presetdef name="include">
+ <current:import mode="include" />
+ </presetdef>
+
+ <presetdef name="build">
+ <current:import organisation="org.apache.easyant.buildtypes"/>
+ </presetdef>
+
+ <presetdef name="plugin">
+ <current:import mode="include" organisation="org.apache.easyant.plugins"/>
+ </presetdef>
+</antlib>
Propchange: incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/antlib.xml
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/antlib.xml
------------------------------------------------------------------------------
svn:keywords = Date Revision Author HeadURL Id
Propchange: incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/antlib.xml
------------------------------------------------------------------------------
svn:mime-type = text/xml
Added: incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/default-easyant-ivysettings.xml
URL: http://svn.apache.org/viewvc/incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/default-easyant-ivysettings.xml?rev=1071697&view=auto
==============================================================================
--- incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/default-easyant-ivysettings.xml (added)
+++ incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/default-easyant-ivysettings.xml Thu Feb 17 17:01:07 2011
@@ -0,0 +1,39 @@
+<!--
+ Copyright 2008-2010 the EasyAnt project
+
+ See the NOTICE file distributed with this work for additional information
+ regarding copyright ownership.
+
+ 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.
+-->
+<ivysettings>
+ <settings defaultResolver="easyant-default-chain"/>
+ <caches defaultCacheDir="${user.home}/.easyant/easyant-cache" useOrigin="true" />
+ <typedef name="jar" classname="org.apache.easyant.core.ivy.resolvers.JarResolver"/>
+ <resolvers>
+ <jar name="easyant-core-modules">
+ <ivy pattern="${easyant.core.repo.url}/[organisation]/[module]/[revision]/[module].ivy"/>
+ <artifact pattern="${easyant.core.repo.url}/[organisation]/[module]/[revision]/[artifact](-[classifier]).[ext]"/>
+ </jar>
+ <filesystem name="easyant-shared-modules">
+ <ivy pattern="${user.home}/.easyant/repository/easyant-shared-modules/[organisation]/[module]/[revision]/[module].ivy"/>
+ <artifact pattern="${user.home}/.easyant/repository/easyant-shared-modules/[organisation]/[module]/[revision]/[artifact](-[classifier]).[ext]"/>
+ </filesystem>
+ <ibiblio name="public-maven" m2compatible="true"/>
+ <chain name="easyant-default-chain" returnFirst="true">
+ <resolver ref="easyant-core-modules" />
+ <resolver ref="easyant-shared-modules"/>
+ <resolver ref="public-maven"/>
+ </chain>
+ </resolvers>
+</ivysettings>
Propchange: incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/default-easyant-ivysettings.xml
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/default-easyant-ivysettings.xml
------------------------------------------------------------------------------
svn:keywords = Date Revision Author HeadURL Id
Propchange: incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/default-easyant-ivysettings.xml
------------------------------------------------------------------------------
svn:mime-type = text/xml
Added: incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/default-project-ivysettings.xml
URL: http://svn.apache.org/viewvc/incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/default-project-ivysettings.xml?rev=1071697&view=auto
==============================================================================
--- incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/default-project-ivysettings.xml (added)
+++ incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/default-project-ivysettings.xml Thu Feb 17 17:01:07 2011
@@ -0,0 +1,7 @@
+<ivysettings>
+ <property name="ivy.shared.default.artifact.pattern" value="[organisation]/[module]/[revision]/[type]s/[artifact](-[classifier]).[ext]" />
+ <property name="ivy.local.default.artifact.pattern" value="[organisation]/[module]/[revision]/[type]s/[artifact](-[classifier]).[ext]"/>
+ <caches useOrigin="true" defaultCacheDir="${user.home}/.easyant/project-cache" />
+ <include url="${ivy.default.settings.dir}/ivysettings.xml"/>
+
+</ivysettings>
\ No newline at end of file
Propchange: incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/default-project-ivysettings.xml
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/default-project-ivysettings.xml
------------------------------------------------------------------------------
svn:keywords = Date Revision Author HeadURL Id
Propchange: incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/default-project-ivysettings.xml
------------------------------------------------------------------------------
svn:mime-type = text/xml
Added: incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/easyant-config.xsd
URL: http://svn.apache.org/viewvc/incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/easyant-config.xsd?rev=1071697&view=auto
==============================================================================
--- incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/easyant-config.xsd (added)
+++ incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/easyant-config.xsd Thu Feb 17 17:01:07 2011
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2008-2010 the EasyAnt project
+
+ See the NOTICE file distributed with this work for additional information
+ regarding copyright ownership.
+
+ 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.
+-->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ elementFormDefault="qualified">
+
+ <xs:element name="easyant-config">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="ivysettings" minOccurs="0" maxOccurs="1">
+ <xs:complexType>
+ <xs:attribute name="file" type="xs:string" />
+ <xs:attribute name="url" type="xs:string" />
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="system-plugins" minOccurs="0"
+ maxOccurs="1">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="plugin" minOccurs="0" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:attribute name="mrid" type="xs:string" />
+ <xs:attribute name="organisation" type="xs:string" />
+ <xs:attribute name="org" type="xs:string" />
+ <xs:attribute name="module" type="xs:string" />
+ <xs:attribute name="revision" type="xs:string" />
+ <xs:attribute name="rev" type="xs:string" />
+ <xs:attribute name="as" type="xs:string" />
+ <xs:attribute name="mode" type="xs:string" />
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="properties" minOccurs="0" maxOccurs="1">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="property" minOccurs="0" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:attribute name="name" type="xs:string" />
+ <xs:attribute name="value" type="xs:string" />
+ <xs:attribute name="file" type="xs:string" />
+ <xs:attribute name="url" type="xs:string" />
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
\ No newline at end of file
Propchange: incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/easyant-config.xsd
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/easyant-config.xsd
------------------------------------------------------------------------------
svn:keywords = Date Revision Author HeadURL Id
Propchange: incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/easyant-config.xsd
------------------------------------------------------------------------------
svn:mime-type = text/xml
Added: incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/extra-easyant-ivysettings.xml
URL: http://svn.apache.org/viewvc/incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/extra-easyant-ivysettings.xml?rev=1071697&view=auto
==============================================================================
--- incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/extra-easyant-ivysettings.xml (added)
+++ incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/extra-easyant-ivysettings.xml Thu Feb 17 17:01:07 2011
@@ -0,0 +1,32 @@
+<!--
+ Copyright 2008-2010 the EasyAnt project
+
+ See the NOTICE file distributed with this work for additional information
+ regarding copyright ownership.
+
+ 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.
+-->
+<ivysettings>
+ <include url="${easyant.default.ivysettings.url}"/>
+ <settings defaultResolver="easyant-extra-chain"/>
+ <resolvers>
+ <jar name="easyant-extra-modules">
+ <ivy pattern="${easyant.extramodules.repo.url}/[organisation]/[module]/[revision]/[module].ivy"/>
+ <artifact pattern="${easyant.extramodules.repo.url}/[organisation]/[module]/[revision]/[artifact](-[classifier]).[ext]"/>
+ </jar>
+ <chain name="easyant-extra-chain" returnFirst="true">
+ <resolver ref="easyant-extra-modules" />
+ <resolver ref="easyant-default-chain" />
+ </chain>
+ </resolvers>
+</ivysettings>
Propchange: incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/extra-easyant-ivysettings.xml
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/extra-easyant-ivysettings.xml
------------------------------------------------------------------------------
svn:keywords = Date Revision Author HeadURL Id
Propchange: incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/extra-easyant-ivysettings.xml
------------------------------------------------------------------------------
svn:mime-type = text/xml
Added: incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/report/easyant-report-dot.xsl
URL: http://svn.apache.org/viewvc/incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/report/easyant-report-dot.xsl?rev=1071697&view=auto
==============================================================================
--- incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/report/easyant-report-dot.xsl (added)
+++ incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/report/easyant-report-dot.xsl Thu Feb 17 17:01:07 2011
@@ -0,0 +1,65 @@
+<!--
+ Copyright 2008-2010 the EasyAnt project
+
+ See the NOTICE file distributed with this work for additional information
+ regarding copyright ownership.
+
+ 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.
+-->
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+<xsl:output method="text"/>
+<xsl:template match="/ivy-report">
+/* * directed graph dot input file. * * generated by ivy report */
+ digraph G {
+ "<xsl:value-of select="info/@organisation"/>-<xsl:value-of select="info/@module"/>" [label="<xsl:value-of select="info/@module"/>"];
+ <xsl:for-each select="dependencies/module">
+ "<xsl:value-of select="@organisation"/>-<xsl:value-of select="@name"/>" [label="<xsl:value-of select="@name"/>
+ <xsl:for-each select="revision">
+ <xsl:text>\n</xsl:text>
+ <xsl:value-of select="@name"/><xsl:if test="@error"> (error)</xsl:if><xsl:if test="@evicted"> (evicted)</xsl:if>
+ </xsl:for-each>
+ <xsl:text>"];
+</xsl:text>
+ </xsl:for-each>
+ <xsl:apply-templates select="dependencies/module/revision[not(@evicted)]/easyant/imports/import">
+ <xsl:with-param name="parent_organisation" select="dependencies/module/@organisation"/>
+ <xsl:with-param name="parent_name" select="dependencies/module/@name"/>
+ <xsl:with-param name="parent_revision" select="dependencies/module/@revision"/>
+ </xsl:apply-templates>
+ <xsl:text>}</xsl:text>
+</xsl:template>
+
+<xsl:template match="import">
+<xsl:param name="parent_organisation"/>
+<xsl:param name="parent_name"/>
+<xsl:param name="parent_revision"/>
+<xsl:text>"</xsl:text>
+ <xsl:value-of select="@organisation"/>-<xsl:value-of select="@name"/>
+ <xsl:text>" -> "</xsl:text>
+ <xsl:value-of select="$parent_organisation"/>-<xsl:value-of select="$parent_name"/>
+ <xsl:text>" [label="</xsl:text>
+ <xsl:value-of select="$parent_revision"/>
+ <xsl:text>"]</xsl:text>
+ <xsl:text>;
+</xsl:text>
+
+ <xsl:apply-templates select="easyant/imports/import">
+ <xsl:with-param name="parent_organisation" select="@organisation"/>
+ <xsl:with-param name="parent_name" select="@name"/>
+ <xsl:with-param name="parent_revision" select="@revision"/>
+ </xsl:apply-templates>
+
+</xsl:template>
+
+</xsl:stylesheet>
Propchange: incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/report/easyant-report-dot.xsl
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/report/easyant-report-dot.xsl
------------------------------------------------------------------------------
svn:keywords = Date Revision Author HeadURL Id
Propchange: incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/report/easyant-report-dot.xsl
------------------------------------------------------------------------------
svn:mime-type = text/xml
Added: incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/report/easyant-report.css
URL: http://svn.apache.org/viewvc/incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/report/easyant-report.css?rev=1071697&view=auto
==============================================================================
--- incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/report/easyant-report.css (added)
+++ incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/report/easyant-report.css Thu Feb 17 17:01:07 2011
@@ -0,0 +1,280 @@
+/*
+ * Copyright 2008-2010 the EasyAnt project
+ *
+ * See the NOTICE file distributed with this work for additional information
+ * regarding copyright ownership.
+ *
+ * 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.
+ */
+
+body {
+ font-family:"Trebuchet MS",Verdana,Geneva,Arial,Helvetica,sans-serif;
+ font-size:small;
+}
+
+div#logo {
+ float: right;
+ padding-left: 10px;
+ padding-bottom: 10px;
+ background: white;
+ text-align: center;
+}
+
+#logo img {
+ border: 0;
+}
+
+div#date {
+ font-style: italic;
+ padding-left: 60px;
+ padding-bottom: 40px;
+}
+
+
+h1 {
+ margin-bottom:2px;
+
+ border-color:#7A9437;
+ border-style:solid;
+ border-width:0 0 3px 0;
+}
+
+span#module {
+ color:#7A9437;
+ text-decoration:none;
+}
+
+span#organisation {
+ color:black;
+ text-decoration:none;
+}
+
+#confmenu {
+ color: #000;
+ border-bottom: 2px solid black;
+ margin: 12px 0px 0px 0px;
+ padding: 0px;
+ z-index: 1;
+ padding-left: 10px
+}
+
+#confmenu li {
+ display: inline;
+ overflow: hidden;
+ list-style-type: none;
+}
+
+#confmenu a, a.active {
+ color: #DEDECF;
+ background: #898B5E;
+ font: bold 1em "Trebuchet MS", Arial, sans-serif;
+ border: 2px solid black;
+ padding: 2px 5px 0px 5px;
+ text-decoration: none;
+}
+
+/*
+background: #ABAD85 #CED4BD
+background: #DEE4CD
+ */
+
+#confmenu a.active {
+ color: #7A9437;
+ background: #DEE4CD;
+ border-bottom: 3px solid #DEE4CD;
+}
+
+#confmenu a:hover {
+ color: #fff;
+ background: #ADC09F;
+}
+
+#confmenu a:visited {
+ color: #DEDECF;
+}
+
+#confmenu a.active:visited {
+ color: #7A9437;
+}
+
+#confmenu a.active:hover {
+ background: #DEE4CD;
+ color: #DEDECF;
+}
+
+#content {
+ background: #DEE4CD;
+ padding: 20px;
+ border: 2px solid black;
+ border-top: none;
+ z-index: 2;
+}
+
+#content a {
+ text-decoration: none;
+ color: #E8E9BE;
+}
+
+#content a:hover {
+ background: #898B5E;
+}
+
+
+h2 {
+ margin-bottom:2px;
+ font-size:medium;
+
+ border-color:#7A9437;
+ border-style:solid;
+ border-width:0 0 2px 0;
+}
+
+h3 {
+ margin-top:30px;
+ margin-bottom:2px;
+ padding: 5 5 5 0;
+ font-size: 24px;
+ border-style:solid;
+ border-width:0 0 2px 0;
+}
+
+h4 {
+ margin-bottom:2px;
+ margin-top:2px;
+ font-size:medium;
+
+ border-color:#7A9437;
+ border-style:dashed;
+ border-width:0 0 1px 0;
+}
+
+h5 {
+ margin-bottom:2px;
+ margin-top:2px;
+ margin-left:20px;
+ font-size:medium;
+}
+
+span.resolved {
+ padding-left: 15px;
+ font-weight: 500;
+ font-size: small;
+}
+
+
+#content table {
+ border-collapse:collapse;
+ width:90%;
+ margin:auto;
+ margin-top: 5px;
+}
+#content thead {
+ background-color:#CED4BD;
+ border:1px solid #7A9437;
+}
+#content tbody {
+ border-collapse:collapse;
+ background-color:#FFFFFF;
+ border:1px solid #7A9437;
+}
+
+#content th {
+ font-family:monospace;
+ border:1px solid #7A9437;
+ padding:5px;
+}
+
+#content td {
+ border:1px dotted #7A9437;
+ padding:0 3 0 3;
+}
+
+#content table a {
+ color:#7A9437;
+ text-decoration:none;
+}
+
+#content table a:hover {
+ background-color:#CED4BD;
+ color:#7A9437;
+}
+
+
+
+table.deps {
+ border-collapse:collapse;
+ width:90%;
+ margin:auto;
+ margin-top: 5px;
+}
+
+table.deps thead {
+ background-color:#CED4BD;
+ border:1px solid #7A9437;
+}
+table.deps tbody {
+ border-collapse:collapse;
+ background-color:#FFFFFF;
+ border:1px solid #7A9437;
+}
+
+table.deps th {
+ font-family:monospace;
+ border:1px solid #7A9437;
+ padding:2;
+}
+
+table.deps td {
+ border:1px dotted #7A9437;
+ padding:0 3 0 3;
+}
+
+
+
+
+
+table.header {
+ border:0;
+ width:90%;
+ margin:auto;
+ margin-top: 5px;
+}
+
+table.header thead {
+ border:0;
+}
+table.header tbody {
+ border:0;
+}
+table.header tr {
+ padding:0px;
+ border:0;
+}
+table.header td {
+ padding:0 3 0 3;
+ border:0;
+}
+
+td.title {
+ width:150px;
+ margin-right:15px;
+
+ font-size:small;
+ font-weight:700;
+}
+
+td.title:first-letter {
+ color:#7A9437;
+ background-color:transparent;
+}
+
Propchange: incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/report/easyant-report.css
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/report/easyant-report.css
------------------------------------------------------------------------------
svn:keywords = Date Revision Author HeadURL Id
Propchange: incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/report/easyant-report.css
------------------------------------------------------------------------------
svn:mime-type = text/css
Added: incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/report/easyant-report.xsl
URL: http://svn.apache.org/viewvc/incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/report/easyant-report.xsl?rev=1071697&view=auto
==============================================================================
--- incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/report/easyant-report.xsl (added)
+++ incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/report/easyant-report.xsl Thu Feb 17 17:01:07 2011
@@ -0,0 +1,861 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+ Copyright 2008-2010 the EasyAnt project
+
+ See the NOTICE file distributed with this work for additional information
+ regarding copyright ownership.
+
+ 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.
+-->
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ea="antlib:org.apache.easyant">
+
+ <xsl:param name="confs" select="/ivy-report/info/@confs" />
+ <xsl:param name="extension" select="'xml'" />
+
+
+ <xsl:variable name="myorg" select="/ivy-report/info/@organisation" />
+ <xsl:variable name="mymod" select="/ivy-report/info/@module" />
+ <xsl:variable name="myconf" select="/ivy-report/info/@conf" />
+
+ <xsl:variable name="modules" select="/ivy-report/dependencies/module" />
+ <xsl:variable name="conflicts" select="$modules[count(revision) > 1]" />
+
+ <xsl:variable name="revisions" select="$modules/revision" />
+ <xsl:variable name="evicteds" select="$revisions[@evicted]" />
+ <xsl:variable name="downloadeds" select="$revisions[@downloaded='true']" />
+ <xsl:variable name="searcheds" select="$revisions[@searched='true']" />
+ <xsl:variable name="errors" select="$revisions[@error]" />
+
+ <xsl:variable name="artifacts" select="$revisions/artifacts/artifact" />
+ <xsl:variable name="cacheartifacts" select="$artifacts[@status='no']" />
+ <xsl:variable name="dlartifacts" select="$artifacts[@status='successful']" />
+ <xsl:variable name="faileds" select="$artifacts[@status='failed']" />
+ <xsl:variable name="artifactsok" select="$artifacts[@status!='failed']" />
+
+ <xsl:variable name="easyant" select="$revisions/easyant" />
+ <xsl:variable name="targets" select="$easyant/targets" />
+ <xsl:variable name="phases" select="$easyant/phases" />
+ <xsl:variable name="imports" select="$easyant/imports" />
+
+
+ <xsl:template name="calling">
+ <xsl:param name="org" />
+ <xsl:param name="mod" />
+ <xsl:param name="rev" />
+ <xsl:if
+ test="count($modules/revision/caller[(@organisation=$org and @name=$mod) and @callerrev=$rev]) = 0">
+ <table>
+ <tr>
+ <td>
+ No dependency
+ </td>
+ </tr>
+ </table>
+ </xsl:if>
+ <xsl:if
+ test="count($modules/revision/caller[(@organisation=$org and @name=$mod) and @callerrev=$rev]) > 0">
+ <table class="deps">
+ <thead>
+ <tr>
+ <th>Module</th>
+ <th>Revision</th>
+ <th>Status</th>
+ <th>Resolver</th>
+ <th>Default</th>
+ <th>Licenses</th>
+ <th>Size</th>
+ <th></th>
+ </tr>
+ </thead>
+ <tbody>
+ <xsl:for-each
+ select="$modules/revision/caller[(@organisation=$org and @name=$mod) and @callerrev=$rev]">
+ <xsl:call-template name="called">
+ <xsl:with-param name="callstack"
+ select="concat($org, string('/'), $mod)" />
+ <xsl:with-param name="indent" select="string('')" />
+ <xsl:with-param name="revision" select=".." />
+ </xsl:call-template>
+ </xsl:for-each>
+ </tbody>
+ </table>
+ </xsl:if>
+ </xsl:template>
+
+ <xsl:template name="called">
+ <xsl:param name="callstack" />
+ <xsl:param name="indent" />
+ <xsl:param name="revision" />
+
+ <xsl:param name="organisation" select="$revision/../@organisation" />
+ <xsl:param name="module" select="$revision/../@name" />
+ <xsl:param name="rev" select="$revision/@name" />
+ <xsl:param name="resolver" select="$revision/@resolver" />
+ <xsl:param name="isdefault" select="$revision/@default" />
+ <xsl:param name="status" select="$revision/@status" />
+ <tr>
+ <td>
+ <xsl:element name="a">
+ <xsl:attribute name="href">#<xsl:value-of
+ select="$organisation" />-<xsl:value-of select="$module" /></xsl:attribute>
+ <xsl:value-of select="concat($indent, ' ')" />
+ <xsl:value-of select="$module" />
+ by
+ <xsl:value-of select="$organisation" />
+ </xsl:element>
+ </td>
+ <td>
+ <xsl:element name="a">
+ <xsl:attribute name="href">#<xsl:value-of
+ select="$organisation" />-<xsl:value-of select="$module" />-<xsl:value-of
+ select="$rev" /></xsl:attribute>
+ <xsl:value-of select="$rev" />
+ </xsl:element>
+ </td>
+ <td align="center">
+ <xsl:value-of select="$status" />
+ </td>
+ <td align="center">
+ <xsl:value-of select="$resolver" />
+ </td>
+ <td align="center">
+ <xsl:value-of select="$isdefault" />
+ </td>
+ <td align="center">
+ <xsl:call-template name="licenses">
+ <xsl:with-param name="revision" select="$revision" />
+ </xsl:call-template>
+ </td>
+ <td align="center">
+ <xsl:value-of
+ select="round(sum($revision/artifacts/artifact/@size) div 1024)" />
+ kB
+ </td>
+ <td align="center">
+ <xsl:call-template name="icons">
+ <xsl:with-param name="revision" select="$revision" />
+ </xsl:call-template>
+ </td>
+ </tr>
+ <xsl:if test="not($revision/@evicted)">
+ <xsl:if
+ test="not(contains($callstack, concat($organisation, string('/'), $module)))">
+ <xsl:for-each
+ select="$modules/revision/caller[(@organisation=$organisation and @name=$module) and @callerrev=$rev]">
+ <xsl:call-template name="called">
+ <xsl:with-param name="callstack"
+ select="concat($callstack, string('#'), $organisation, string('/'), $module)" />
+ <xsl:with-param name="indent"
+ select="concat($indent, string('---'))" />
+ <xsl:with-param name="revision" select=".." />
+ </xsl:call-template>
+ </xsl:for-each>
+ </xsl:if>
+ </xsl:if>
+ </xsl:template>
+
+ <xsl:template name="licenses">
+ <xsl:param name="revision" />
+ <xsl:for-each select="$revision/license">
+ <span style="padding-right:3px;">
+ <xsl:if test="@url">
+ <xsl:element name="a">
+ <xsl:attribute name="href"><xsl:value-of
+ select="@url" /></xsl:attribute>
+ <xsl:value-of select="@name" />
+ </xsl:element>
+ </xsl:if>
+ <xsl:if test="not(@url)">
+ <xsl:value-of select="@name" />
+ </xsl:if>
+ </span>
+ </xsl:for-each>
+ </xsl:template>
+
+ <xsl:template name="icons">
+ <xsl:param name="revision" />
+ <xsl:if test="$revision/@searched = 'true'">
+ <img src="http://ant.apache.org/ivy/images/searched.gif" alt="searched"
+ title="required a search in repository" />
+ </xsl:if>
+ <xsl:if test="$revision/@downloaded = 'true'">
+ <img src="http://ant.apache.org/ivy/images/downloaded.gif" alt="downloaded"
+ title="downloaded from repository" />
+ </xsl:if>
+ <xsl:if test="$revision/@evicted">
+ <xsl:element name="img">
+ <xsl:attribute name="src">http://ant.apache.org/ivy/images/evicted.gif</xsl:attribute>
+ <xsl:attribute name="alt">evicted</xsl:attribute>
+ <xsl:attribute name="title">evicted by <xsl:for-each
+ select="$revision/evicted-by"><xsl:value-of select="@rev" /> </xsl:for-each></xsl:attribute>
+ </xsl:element>
+ </xsl:if>
+ <xsl:if test="$revision/@error">
+ <xsl:element name="img">
+ <xsl:attribute name="src">http://ant.apache.org/ivy/images/error.gif</xsl:attribute>
+ <xsl:attribute name="alt">error</xsl:attribute>
+ <xsl:attribute name="title">error: <xsl:value-of
+ select="$revision/@error" /></xsl:attribute>
+ </xsl:element>
+ </xsl:if>
+ </xsl:template>
+
+ <xsl:template name="error">
+ <xsl:param name="organisation" />
+ <xsl:param name="module" />
+ <xsl:param name="revision" />
+ <xsl:param name="error" />
+ <tr>
+ <td>
+ <xsl:element name="a">
+ <xsl:attribute name="href">#<xsl:value-of
+ select="$organisation" />-<xsl:value-of select="$module" /></xsl:attribute>
+ <xsl:value-of select="$module" />
+ by
+ <xsl:value-of select="$organisation" />
+ </xsl:element>
+ </td>
+ <td>
+ <xsl:element name="a">
+ <xsl:attribute name="href">#<xsl:value-of
+ select="$organisation" />-<xsl:value-of select="$module" />-<xsl:value-of
+ select="$revision" /></xsl:attribute>
+ <xsl:value-of select="$revision" />
+ </xsl:element>
+ </td>
+ <td>
+ <xsl:value-of select="$error" />
+ </td>
+ </tr>
+ </xsl:template>
+
+ <xsl:template name="confs">
+ <xsl:param name="configurations" />
+
+ <xsl:if test="contains($configurations, ',')">
+ <xsl:call-template name="conf">
+ <xsl:with-param name="conf"
+ select="normalize-space(substring-before($configurations,','))" />
+ </xsl:call-template>
+ <xsl:call-template name="confs">
+ <xsl:with-param name="configurations"
+ select="substring-after($configurations,',')" />
+ </xsl:call-template>
+ </xsl:if>
+ <xsl:if test="not(contains($configurations, ','))">
+ <xsl:call-template name="conf">
+ <xsl:with-param name="conf"
+ select="normalize-space($configurations)" />
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:template>
+
+ <xsl:template name="conf">
+ <xsl:param name="conf" />
+
+ <li>
+ <xsl:element name="a">
+ <xsl:if test="$conf = $myconf">
+ <xsl:attribute name="class">active</xsl:attribute>
+ </xsl:if>
+ <xsl:attribute name="href"><xsl:value-of select="$myorg" />-<xsl:value-of
+ select="$mymod" />-<xsl:value-of select="$conf" />.<xsl:value-of
+ select="$extension" /></xsl:attribute>
+ <xsl:value-of select="$conf" />
+ </xsl:element>
+ </li>
+ </xsl:template>
+
+ <xsl:template name="date">
+ <xsl:param name="date" />
+
+ <xsl:value-of select="substring($date,1,4)" />
+ -
+ <xsl:value-of select="substring($date,5,2)" />
+ -
+ <xsl:value-of select="substring($date,7,2)" />
+ <xsl:value-of select="' '" />
+ <xsl:value-of select="substring($date,9,2)" />
+ :
+ <xsl:value-of select="substring($date,11,2)" />
+ :
+ <xsl:value-of select="substring($date,13)" />
+ </xsl:template>
+
+
+ <xsl:template match="/ivy-report">
+
+ <html>
+ <head>
+ <title>
+ Ivy report ::
+ <xsl:value-of select="info/@module" />
+ by
+ <xsl:value-of select="info/@organisation" />
+ ::
+ <xsl:value-of select="info/@conf" />
+ </title>
+ <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="content-language" content="en" />
+ <meta name="robots" content="index,follow" />
+ <link rel="stylesheet" type="text/css" href="easyant-report.css" />
+ </head>
+ <body>
+ <div id="logo">
+ <a href="http://ant.apache.org/ivy/">
+ <img src="http://ant.apache.org/ivy/logo.png" />
+ </a>
+ </div>
+ <h1>
+ <xsl:element name="a">
+ <xsl:attribute name="name"><xsl:value-of
+ select="info/@organisation" />-<xsl:value-of select="info/@module" /></xsl:attribute>
+ </xsl:element>
+ <span id="module">
+ <xsl:value-of select="info/@module" />
+ </span>
+ by
+ <span id="organisation">
+ <xsl:value-of select="info/@organisation" />
+ </span>
+ </h1>
+ <div id="date">
+ resolved on
+ <xsl:call-template name="date">
+ <xsl:with-param name="date" select="info/@date" />
+ </xsl:call-template>
+ </div>
+ <ul id="confmenu">
+ <xsl:call-template name="confs">
+ <xsl:with-param name="configurations" select="$confs" />
+ </xsl:call-template>
+ </ul>
+
+ <div id="content">
+ <h2>Dependencies Stats</h2>
+ <table class="header">
+ <tr>
+ <td class="title">Modules</td>
+ <td class="value">
+ <xsl:value-of select="count($modules)" />
+ </td>
+ </tr>
+ <tr>
+ <td class="title">Revisions</td>
+ <td class="value">
+ <xsl:value-of select="count($revisions)" />
+ (
+ <xsl:value-of select="count($searcheds)" />
+ searched
+ <img src="http://ant.apache.org/ivy/images/searched.gif"
+ alt="searched"
+ title="module revisions which required a search with a dependency resolver to be resolved" />
+ ,
+ <xsl:value-of select="count($downloadeds)" />
+ downloaded
+ <img src="http://ant.apache.org/ivy/images/downloaded.gif"
+ alt="downloaded"
+ title="module revisions for which ivy file was downloaded by dependency resolver" />
+ ,
+ <xsl:value-of select="count($evicteds)" />
+ evicted
+ <img src="http://ant.apache.org/ivy/images/evicted.gif" alt="evicted"
+ title="module revisions which were evicted by others" />
+ ,
+ <xsl:value-of select="count($errors)" />
+ errors
+ <img src="http://ant.apache.org/ivy/images/error.gif" alt="error"
+ title="module revisions on which error occured" />
+ )
+ </td>
+ </tr>
+ <tr>
+ <td class="title">Artifacts</td>
+ <td class="value">
+ <xsl:value-of select="count($artifacts)" />
+ (
+ <xsl:value-of select="count($dlartifacts)" />
+ downloaded,
+ <xsl:value-of select="count($faileds)" />
+ failed)
+ </td>
+ </tr>
+ <tr>
+ <td class="title">Artifacts size</td>
+ <td class="value">
+ <xsl:value-of select="round(sum($artifacts/@size) div 1024)" />
+ kB
+ (
+ <xsl:value-of select="round(sum($dlartifacts/@size) div 1024)" />
+ kB downloaded,
+ <xsl:value-of select="round(sum($cacheartifacts/@size) div 1024)" />
+ kB in cache)
+ </td>
+ </tr>
+ </table>
+
+ <xsl:if test="count($errors) > 0">
+ <h2>Errors</h2>
+ <table class="errors">
+ <thead>
+ <tr>
+ <th>Module</th>
+ <th>Revision</th>
+ <th>Error</th>
+ </tr>
+ </thead>
+ <tbody>
+ <xsl:for-each select="$errors">
+ <xsl:call-template name="error">
+ <xsl:with-param name="organisation" select="../@organisation" />
+ <xsl:with-param name="module" select="../@name" />
+ <xsl:with-param name="revision" select="@name" />
+ <xsl:with-param name="error" select="@error" />
+ </xsl:call-template>
+ </xsl:for-each>
+ </tbody>
+ </table>
+ </xsl:if>
+
+ <xsl:if test="count($conflicts) > 0">
+ <h2>Conflicts</h2>
+ <table class="conflicts">
+ <thead>
+ <tr>
+ <th>Module</th>
+ <th>Selected</th>
+ <th>Evicted</th>
+ </tr>
+ </thead>
+ <tbody>
+ <xsl:for-each select="$conflicts">
+ <tr>
+ <td>
+ <xsl:element name="a">
+ <xsl:attribute name="href">#<xsl:value-of
+ select="@organisation" />-<xsl:value-of
+ select="@name" /></xsl:attribute>
+ <xsl:value-of select="@name" />
+ by
+ <xsl:value-of select="@organisation" />
+ </xsl:element>
+ </td>
+ <td>
+ <xsl:for-each select="revision[not(@evicted)]">
+ <xsl:element name="a">
+ <xsl:attribute name="href">#<xsl:value-of
+ select="../@organisation" />-<xsl:value-of
+ select="../@name" />-<xsl:value-of select="@name" /></xsl:attribute>
+ <xsl:value-of select="@name" />
+ </xsl:element>
+ <xsl:text> </xsl:text>
+ </xsl:for-each>
+ </td>
+ <td>
+ <xsl:for-each select="revision[@evicted]">
+ <xsl:element name="a">
+ <xsl:attribute name="href">#<xsl:value-of
+ select="../@organisation" />-<xsl:value-of
+ select="../@name" />-<xsl:value-of select="@name" /></xsl:attribute>
+ <xsl:value-of select="@name" />
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="@evicted-reason" />
+ </xsl:element>
+ <xsl:text> </xsl:text>
+ </xsl:for-each>
+ </td>
+ </tr>
+ </xsl:for-each>
+ </tbody>
+ </table>
+ </xsl:if>
+
+ <h2>Dependencies Overview</h2>
+ <xsl:call-template name="calling">
+ <xsl:with-param name="org" select="info/@organisation" />
+ <xsl:with-param name="mod" select="info/@module" />
+ <xsl:with-param name="rev" select="info/@revision" />
+ </xsl:call-template>
+
+ <h2>Details</h2>
+ <xsl:for-each select="$modules">
+ <h3>
+ <xsl:element name="a">
+ <xsl:attribute name="name"><xsl:value-of
+ select="@organisation" />-<xsl:value-of select="@name" /></xsl:attribute>
+ </xsl:element>
+ <xsl:value-of select="@name" />
+ by
+ <xsl:value-of select="@organisation" />
+ </h3>
+ <xsl:for-each select="revision">
+ <h4>
+ <xsl:element name="a">
+ <xsl:attribute name="name"><xsl:value-of
+ select="../@organisation" />-<xsl:value-of
+ select="../@name" />-<xsl:value-of select="@name" /></xsl:attribute>
+ </xsl:element>
+ Revision:
+ <xsl:value-of select="@name" />
+ <span style="padding-left:15px;">
+ <xsl:call-template name="icons">
+ <xsl:with-param name="revision" select="." />
+ </xsl:call-template>
+ </span>
+ </h4>
+ <h5>Description</h5>
+ <xsl:copy-of select="description"/>
+ <table class="header">
+ <xsl:if test="@homepage">
+ <tr>
+ <td class="title">Home Page</td>
+ <td class="value">
+ <xsl:element name="a">
+ <xsl:attribute name="href"><xsl:value-of
+ select="@homepage" /></xsl:attribute>
+ <xsl:value-of select="@homepage" />
+ </xsl:element>
+ </td>
+ </tr>
+ </xsl:if>
+ <tr>
+ <td class="title">Status</td>
+ <td class="value">
+ <xsl:value-of select="@status" />
+ </td>
+ </tr>
+ <tr>
+ <td class="title">Publication</td>
+ <td class="value">
+ <xsl:value-of select="@pubdate" />
+ </td>
+ </tr>
+ <tr>
+ <td class="title">Resolver</td>
+ <td class="value">
+ <xsl:value-of select="@resolver" />
+ </td>
+ </tr>
+ <tr>
+ <td class="title">Configurations</td>
+ <td class="value">
+ <xsl:value-of select="@conf" />
+ </td>
+ </tr>
+ <tr>
+ <td class="title">Artifacts size</td>
+ <td class="value">
+ <xsl:value-of select="round(sum(artifacts/artifact/@size) div 1024)" />
+ kB
+ (
+ <xsl:value-of
+ select="round(sum(artifacts/artifact[@status='successful']/@size) div 1024)" />
+ kB downloaded,
+ <xsl:value-of
+ select="round(sum(artifacts/artifact[@status='no']/@size) div 1024)" />
+ kB in cache)
+ </td>
+ </tr>
+ <xsl:if test="count(license) > 0">
+ <tr>
+ <td class="title">Licenses</td>
+ <td class="value">
+ <xsl:call-template name="licenses">
+ <xsl:with-param name="revision" select="." />
+ </xsl:call-template>
+ </td>
+ </tr>
+ </xsl:if>
+ <xsl:if test="@evicted">
+ <tr>
+ <td class="title">Evicted by</td>
+ <td class="value">
+ <b>
+ <xsl:for-each select="evicted-by">
+ <xsl:value-of select="@rev" />
+ <xsl:text> </xsl:text>
+ </xsl:for-each>
+ </b>
+ <xsl:text> </xsl:text>
+ <b>
+ <xsl:value-of select="@evicted-reason" />
+ </b>
+ in
+ <b>
+ <xsl:value-of select="@evicted" />
+ </b>
+ conflict manager
+ </td>
+ </tr>
+ </xsl:if>
+ </table>
+ <h5>Required by</h5>
+ <table>
+ <thead>
+ <tr>
+ <th>Organisation</th>
+ <th>Name</th>
+ <th>Revision</th>
+ <th>In Configurations</th>
+ <th>Asked Revision</th>
+ </tr>
+ </thead>
+ <tbody>
+ <xsl:for-each select="caller">
+ <tr>
+ <td>
+ <xsl:value-of select="@organisation" />
+ </td>
+ <td>
+ <xsl:element name="a">
+ <xsl:attribute name="href">#<xsl:value-of
+ select="@organisation" />-<xsl:value-of
+ select="@name" /></xsl:attribute>
+ <xsl:value-of select="@name" />
+ </xsl:element>
+ </td>
+ <td>
+ <xsl:value-of select="@callerrev" />
+ </td>
+ <td>
+ <xsl:value-of select="@conf" />
+ </td>
+ <td>
+ <xsl:value-of select="@rev" />
+ </td>
+ </tr>
+ </xsl:for-each>
+ </tbody>
+ </table>
+ <xsl:if test="not(@evicted)">
+
+ <h5>Dependencies</h5>
+ <xsl:call-template name="calling">
+ <xsl:with-param name="org" select="../@organisation" />
+ <xsl:with-param name="mod" select="../@name" />
+ <xsl:with-param name="rev" select="@name" />
+ </xsl:call-template>
+ <h5>Artifacts</h5>
+ <xsl:if test="count(artifacts/artifact) = 0">
+ <table>
+ <tr>
+ <td>
+ No artifact
+ </td>
+ </tr>
+ </table>
+ </xsl:if>
+ <xsl:if test="count(artifacts/artifact) > 0">
+ <table>
+ <thead>
+ <tr>
+ <th>Name</th>
+ <th>Type</th>
+ <th>Ext</th>
+ <th>Download</th>
+ <th>Size</th>
+ </tr>
+ </thead>
+ <tbody>
+ <xsl:for-each select="artifacts/artifact">
+ <tr>
+ <td>
+ <xsl:value-of select="@name" />
+ </td>
+ <td>
+ <xsl:value-of select="@type" />
+ </td>
+ <td>
+ <xsl:value-of select="@ext" />
+ </td>
+ <td align="center">
+ <xsl:value-of select="@status" />
+ </td>
+ <td align="center">
+ <xsl:value-of select="round(number(@size) div 1024)" />
+ kB
+ </td>
+ </tr>
+ </xsl:for-each>
+ </tbody>
+ </table>
+ </xsl:if>
+
+ </xsl:if>
+ <xsl:apply-templates select="easyant" />
+ </xsl:for-each>
+ </xsl:for-each>
+ </div>
+ </body>
+ </html>
+ </xsl:template>
+
+ <xsl:template match="easyant">
+ <h2>Available targets</h2>
+ <table>
+ <thead>
+ <tr>
+ <th>target name</th>
+ <th>description</th>
+ <th>phase</th>
+ <th>depends</th>
+ </tr>
+ </thead>
+ <tbody>
+ <xsl:apply-templates select="targets/target" />
+ </tbody>
+ </table>
+
+ <h2>Available phases</h2>
+ <table>
+ <thead>
+ <tr>
+ <th>target name</th>
+ <th>description</th>
+ <th>depends</th>
+ </tr>
+ </thead>
+ <tbody>
+ <xsl:apply-templates select="phases/phase" />
+ </tbody>
+ </table>
+
+ <h2>Imported module</h2>
+ <table>
+ <thead>
+ <tr>
+ <th>Module revision id</th>
+ <th>Import type</th>
+ <th>prefix</th>
+ </tr>
+ </thead>
+ <tbody>
+ <xsl:apply-templates select="imports/import" />
+ </tbody>
+ </table>
+
+ <h2>Module parameters</h2>
+ <h3>Properties</h3>
+ <table>
+ <thead>
+ <tr>
+ <th>property</th>
+ <th>description</th>
+ <th>required</th>
+ <th>default value</th>
+ </tr>
+ </thead>
+ <tbody>
+ <xsl:for-each select="properties/property">
+ <tr>
+ <td><xsl:value-of select="@name"/></td>
+ <td><xsl:value-of select="@description"/></td>
+ <td><xsl:value-of select="@required"/></td>
+ <td><xsl:value-of select="@default"/></td>
+ </tr>
+ </xsl:for-each>
+ </tbody>
+ </table>
+
+ <h3>Phases</h3>
+ <table>
+ <thead>
+ <tr>
+ <th>phase</th>
+ <th>description</th>
+ </tr>
+ </thead>
+ <tbody>
+ <xsl:for-each select="parameters/phase">
+ <tr>
+ <td><xsl:value-of select="@name"/></td>
+ <td><xsl:value-of select="@description"/></td>
+ </tr>
+ </xsl:for-each>
+ </tbody>
+ </table>
+
+ <h3>Paths</h3>
+ <table>
+ <thead>
+ <tr>
+ <th>path</th>
+ <th>description</th>
+ <th>required</th>
+ </tr>
+ </thead>
+ <tbody>
+ <xsl:for-each select="parameters/path">
+ <tr>
+ <td><xsl:value-of select="@name"/></td>
+ <td><xsl:value-of select="@description"/></td>
+ <td><xsl:value-of select="@required"/></td>
+ </tr>
+ </xsl:for-each>
+ </tbody>
+ </table>
+
+ </xsl:template>
+
+ <xsl:template match="target">
+ <tr>
+ <td>
+ <xsl:value-of select="@name" />
+ </td>
+ <td>
+ <xsl:value-of select="@description" />
+ </td>
+ <td>
+ <xsl:value-of select="@phase" />
+ </td>
+ <td>
+ <xsl:value-of select="@depends" />
+ </td>
+ </tr>
+ </xsl:template>
+
+ <xsl:template match="phases/phase">
+ <tr>
+ <td>
+ <xsl:value-of select="@name" />
+ </td>
+ <td>
+ <xsl:value-of select="@description" />
+ </td>
+ <td>
+ <xsl:value-of select="@depends" />
+ </td>
+ </tr>
+
+ </xsl:template>
+
+ <xsl:template match="import">
+ <tr>
+ <td>
+ <xsl:element name="a">
+ <xsl:attribute name="href"><xsl:value-of
+ select="@name" /><xsl:text>.html</xsl:text></xsl:attribute>
+ <xsl:value-of select="@organisation" />#<xsl:value-of select="@name" />;<xsl:value-of select="@revision" />
+ </xsl:element>
+
+ </td>
+ <td>
+ <xsl:value-of select="@type" />
+ </td>
+ <td>
+ <xsl:value-of select="@as" />
+ </td>
+ </tr>
+ </xsl:template>
+</xsl:stylesheet>
Propchange: incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/report/easyant-report.xsl
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/report/easyant-report.xsl
------------------------------------------------------------------------------
svn:keywords = Date Revision Author HeadURL Id
Propchange: incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/report/easyant-report.xsl
------------------------------------------------------------------------------
svn:mime-type = text/xml
Added: incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/repository/modules/org.apache.easyant.buildtypes/build-std-ant-plugin/0.1/build-std-ant-plugin.ant
URL: http://svn.apache.org/viewvc/incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/repository/modules/org.apache.easyant.buildtypes/build-std-ant-plugin/0.1/build-std-ant-plugin.ant?rev=1071697&view=auto
==============================================================================
--- incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/repository/modules/org.apache.easyant.buildtypes/build-std-ant-plugin/0.1/build-std-ant-plugin.ant (added)
+++ incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/repository/modules/org.apache.easyant.buildtypes/build-std-ant-plugin/0.1/build-std-ant-plugin.ant Thu Feb 17 17:01:07 2011
@@ -0,0 +1,43 @@
+<!--
+ Copyright 2008-2010 the EasyAnt project
+
+ See the NOTICE file distributed with this work for additional information
+ regarding copyright ownership.
+
+ 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 name="org.apache.easyant.buildtypes#build-std-ant-plugin"
+ xmlns:ivy="antlib:org.apache.ivy.ant"
+ xmlns:ea="antlib:org.apache.easyant">
+
+ <ea:core-version requiredrevision="[0.8,+]" />
+ <echo message="Building ${ivy.organisation} ${ivy.module} with org.apache.easyant.buildtypes#build-std-ant-plugin..."/>
+
+ <ea:import mrid="org.apache.easyant.plugins#phases-std;0.2" />
+
+ <property file="${org.apache.easyant.buildtypes#build-std-ant-plugin.properties.file}" />
+
+ <ea:parameter property="version.strategy.plugin.org" description="Organisation name of the version strategy plugin" default="org.apache.easyant.plugins"/>
+ <ea:parameter property="version.strategy.plugin.module" description="Module name of the version strategy plugin" default="default-version-strategy"/>
+ <ea:parameter property="version.strategy.plugin.rev" description="Revision number of the version strategy plugin" default="0.1"/>
+ <ea:parameter property="version.strategy.plugin.mrid" description="Full mrid of the version strategy plugin" default="${version.strategy.plugin.org}#${version.strategy.plugin.module};${version.strategy.plugin.rev}"/>
+
+ <ea:include mrid="org.apache.easyant.plugins#clean-std;0.1" as="clean" />
+ <ea:include mrid="org.apache.easyant.plugins#resources-std;0.1" as="resources" />
+ <ea:include mrid="${version.strategy.plugin.mrid}" as="version" />
+ <ea:include mrid="org.apache.easyant.plugins#ivy-provisioning;0.1" as="lib" />
+ <ea:include mrid="org.apache.easyant.plugins#easyant-plugin-publication;0.1" as="publish" />
+ <ea:include mrid="org.apache.easyant.plugins#antunit;0.1" as="test" />
+
+ <target name="doit" depends="verify" />
+</project>
Propchange: incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/repository/modules/org.apache.easyant.buildtypes/build-std-ant-plugin/0.1/build-std-ant-plugin.ant
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/repository/modules/org.apache.easyant.buildtypes/build-std-ant-plugin/0.1/build-std-ant-plugin.ant
------------------------------------------------------------------------------
svn:keywords = Date Revision Author HeadURL Id
Propchange: incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/repository/modules/org.apache.easyant.buildtypes/build-std-ant-plugin/0.1/build-std-ant-plugin.ant
------------------------------------------------------------------------------
svn:mime-type = text/xml
Added: incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/repository/modules/org.apache.easyant.buildtypes/build-std-ant-plugin/0.1/build-std-ant-plugin.ivy
URL: http://svn.apache.org/viewvc/incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/repository/modules/org.apache.easyant.buildtypes/build-std-ant-plugin/0.1/build-std-ant-plugin.ivy?rev=1071697&view=auto
==============================================================================
--- incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/repository/modules/org.apache.easyant.buildtypes/build-std-ant-plugin/0.1/build-std-ant-plugin.ivy (added)
+++ incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/repository/modules/org.apache.easyant.buildtypes/build-std-ant-plugin/0.1/build-std-ant-plugin.ivy Thu Feb 17 17:01:07 2011
@@ -0,0 +1,30 @@
+<!--
+ Copyright 2008-2010 the EasyAnt project
+
+ See the NOTICE file distributed with this work for additional information
+ regarding copyright ownership.
+
+ 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.
+-->
+<ivy-module version="2.0">
+ <info organisation="org.apache.easyant.buildtypes"
+ module="build-std-ant-plugin"
+ status="milestone"
+ revision="0.1">
+ <description>A standard build for true ant plugins, relying on standard phases, and providing compilation, execution and unit tests</description>
+ </info>
+ <publications>
+ <artifact type="ant" />
+ <artifact type="properties" />
+ </publications>
+</ivy-module>
Propchange: incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/repository/modules/org.apache.easyant.buildtypes/build-std-ant-plugin/0.1/build-std-ant-plugin.ivy
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/repository/modules/org.apache.easyant.buildtypes/build-std-ant-plugin/0.1/build-std-ant-plugin.ivy
------------------------------------------------------------------------------
svn:keywords = Date Revision Author HeadURL Id
Propchange: incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/repository/modules/org.apache.easyant.buildtypes/build-std-ant-plugin/0.1/build-std-ant-plugin.ivy
------------------------------------------------------------------------------
svn:mime-type = text/xml
Added: incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/repository/modules/org.apache.easyant.buildtypes/build-std-ant-plugin/0.1/build-std-ant-plugin.properties
URL: http://svn.apache.org/viewvc/incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/repository/modules/org.apache.easyant.buildtypes/build-std-ant-plugin/0.1/build-std-ant-plugin.properties?rev=1071697&view=auto
==============================================================================
--- incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/repository/modules/org.apache.easyant.buildtypes/build-std-ant-plugin/0.1/build-std-ant-plugin.properties (added)
+++ incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/repository/modules/org.apache.easyant.buildtypes/build-std-ant-plugin/0.1/build-std-ant-plugin.properties Thu Feb 17 17:01:07 2011
@@ -0,0 +1,45 @@
+# ***************************************************************
+# * Copyright 2008-2010 the EasyAnt project
+# *
+# * See the NOTICE file distributed with this work for additional information
+# * regarding copyright ownership.
+# *
+# * 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.
+# ***************************************************************
+#TODO: find a way to have a common property file shared by all build-types (std/webapp/etc..)
+module.name=${ivy.module}
+project.ivy.file=${easyant.file}
+
+src.main.resources=${basedir}/src/main/resources
+src.test.java=${basedir}/src/test/java
+src.test.resources=${basedir}/src/test/resources
+
+target = ${basedir}/target
+target.test.classes=${target}/test/classes
+target.test.xml=${target}/test/xml
+target.test.html=${target}/test/html
+
+target.artifacts=${target}/artifacts
+
+#there is no packaging in true ant plugins,
+#so we can directly copy all main ressources
+#in target/artifacts instead of target/classes
+#we need to do this 'cause we want to reuse the resources-std plugin
+target.main.classes=${target.artifacts}
+
+target.report=${target}/report
+
+release.resolver=easyant-shared-modules
+shared.resolver=easyant-shared-modules
+local.resolver=easyant-shared-modules
+project.ivy.instance=easyant.ivy.instance
\ No newline at end of file
Propchange: incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/repository/modules/org.apache.easyant.buildtypes/build-std-ant-plugin/0.1/build-std-ant-plugin.properties
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/repository/modules/org.apache.easyant.buildtypes/build-std-ant-plugin/0.1/build-std-ant-plugin.properties
------------------------------------------------------------------------------
svn:keywords = Date Revision Author HeadURL Id