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 jl...@apache.org on 2012/11/30 20:11:02 UTC

svn commit: r1415830 - in /incubator/easyant/core/trunk: ./ src/main/java/org/apache/easyant/core/ src/main/java/org/apache/easyant/core/parser/ src/main/java/org/apache/easyant/tasks/ src/main/resources/org/apache/easyant/core/

Author: jlboudart
Date: Fri Nov 30 20:11:00 2012
New Revision: 1415830

URL: http://svn.apache.org/viewvc?rev=1415830&view=rev
Log:
Allow system plugins to be inherited in subprojects. Offline plugin is inheritable by default so invoking it at root level of a multiproject should result in a single offline repository for all subprojects.

Modified:
    incubator/easyant/core/trunk/easyant-conf.xml
    incubator/easyant/core/trunk/src/main/java/org/apache/easyant/core/EasyAntEngine.java
    incubator/easyant/core/trunk/src/main/java/org/apache/easyant/core/parser/EasyAntConfigParser.java
    incubator/easyant/core/trunk/src/main/java/org/apache/easyant/tasks/SubModule.java
    incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/easyant-config.xsd

Modified: incubator/easyant/core/trunk/easyant-conf.xml
URL: http://svn.apache.org/viewvc/incubator/easyant/core/trunk/easyant-conf.xml?rev=1415830&r1=1415829&r2=1415830&view=diff
==============================================================================
--- incubator/easyant/core/trunk/easyant-conf.xml (original)
+++ incubator/easyant/core/trunk/easyant-conf.xml Fri Nov 30 20:11:00 2012
@@ -18,7 +18,6 @@
     <system-plugins>
         <plugin mrid="org.apache.easyant.plugins#skeleton;0.9" as="skeleton"/>
         <plugin mrid="org.apache.easyant.plugins#ivy-repo-management;0.9" as="repo-management"/>
-        <plugin mrid="org.apache.easyant.plugins#offline;0.9"/>
-        
+        <plugin mrid="org.apache.easyant.plugins#offline;0.9" inheritable="true"/>
     </system-plugins>
 </easyant-config>

Modified: incubator/easyant/core/trunk/src/main/java/org/apache/easyant/core/EasyAntEngine.java
URL: http://svn.apache.org/viewvc/incubator/easyant/core/trunk/src/main/java/org/apache/easyant/core/EasyAntEngine.java?rev=1415830&r1=1415829&r2=1415830&view=diff
==============================================================================
--- incubator/easyant/core/trunk/src/main/java/org/apache/easyant/core/EasyAntEngine.java (original)
+++ incubator/easyant/core/trunk/src/main/java/org/apache/easyant/core/EasyAntEngine.java Fri Nov 30 20:11:00 2012
@@ -33,6 +33,7 @@ import org.apache.easyant.core.ant.Proje
 import org.apache.easyant.core.ant.listerners.DefaultEasyAntLogger;
 import org.apache.easyant.core.descriptor.PluginDescriptor;
 import org.apache.easyant.core.factory.EasyantConfigurationFactory;
+import org.apache.easyant.core.ivy.InheritableScope;
 import org.apache.easyant.core.ivy.IvyInstanceHelper;
 import org.apache.easyant.core.services.PluginService;
 import org.apache.easyant.core.services.impl.DefaultPluginServiceImpl;
@@ -431,22 +432,7 @@ public class EasyAntEngine {
             project.log("Active build configurations : " + buildConfigurations, Project.MSG_INFO);
             project.setProperty(EasyAntMagicNames.ACTIVE_BUILD_CONFIGURATIONS, buildConfigurations);
         }
-        // Load system plugins
-        if (configuration.getSystemPlugins().size() > 0) {
-            project.log("Loading System Plugins...");
-        }
-        for (PluginDescriptor systemPlugin : configuration.getSystemPlugins()) {
-            // import/include system plugin
-            Import importTask = new Import();
-            importTask.setMrid(systemPlugin.getMrid());
-            importTask.setOrganisation(systemPlugin.getOrganisation());
-            importTask.setModule(systemPlugin.getModule());
-            importTask.setRevision(systemPlugin.getRevision());
-            importTask.setAs(systemPlugin.getAs());
-            importTask.setMode(systemPlugin.getMode());
-            importTask.setMandatory(systemPlugin.isMandatory());
-            executeTask(importTask, "configure-system-plugins", project);
-        }
+        loadSystemPlugins(project, true);
 
         locateBuildModuleAndBuildFile(project);
 
@@ -461,6 +447,27 @@ public class EasyAntEngine {
         ProjectUtils.injectTargetIntoExtensionPoint(project, helper);
     }
 
+    public void loadSystemPlugins(Project project, boolean isRootProject) {
+        if (configuration.getSystemPlugins().size() > 0) {
+            project.log("Loading System Plugins...");
+        }
+        for (PluginDescriptor systemPlugin : configuration.getSystemPlugins()) {
+            if (isRootProject && InheritableScope.BOTH == systemPlugin.getInheritScope()
+                    || systemPlugin.isInheritable()) {
+                // import/include system plugin
+                Import importTask = new Import();
+                importTask.setMrid(systemPlugin.getMrid());
+                importTask.setOrganisation(systemPlugin.getOrganisation());
+                importTask.setModule(systemPlugin.getModule());
+                importTask.setRevision(systemPlugin.getRevision());
+                importTask.setAs(systemPlugin.getAs());
+                importTask.setMode(systemPlugin.getMode());
+                importTask.setMandatory(systemPlugin.isMandatory());
+                executeTask(importTask, "configure-system-plugins", project);
+            }
+        }
+    }
+
     private void locateBuildModuleAndBuildFile(Project project) {
         File buildModule = configuration.getBuildModule();
         File buildFile = configuration.getBuildFile();

Modified: incubator/easyant/core/trunk/src/main/java/org/apache/easyant/core/parser/EasyAntConfigParser.java
URL: http://svn.apache.org/viewvc/incubator/easyant/core/trunk/src/main/java/org/apache/easyant/core/parser/EasyAntConfigParser.java?rev=1415830&r1=1415829&r2=1415830&view=diff
==============================================================================
--- incubator/easyant/core/trunk/src/main/java/org/apache/easyant/core/parser/EasyAntConfigParser.java (original)
+++ incubator/easyant/core/trunk/src/main/java/org/apache/easyant/core/parser/EasyAntConfigParser.java Fri Nov 30 20:11:00 2012
@@ -31,6 +31,7 @@ import javax.xml.parsers.ParserConfigura
 
 import org.apache.easyant.core.EasyAntConfiguration;
 import org.apache.easyant.core.descriptor.PluginDescriptor;
+import org.apache.easyant.core.ivy.InheritableScope;
 import org.apache.ivy.util.ContextualSAXHandler;
 import org.apache.ivy.util.Message;
 import org.apache.ivy.util.XMLHelper;
@@ -177,10 +178,18 @@ public class EasyAntConfigParser {
                 pluginDescriptor.setMrid(attributes.getValue("mrid"));
                 pluginDescriptor.setAs(attributes.getValue("as"));
                 boolean mandatory = false;
-                if (attributes.getValue("mandatory") != null && attributes.getValue("mandatory").equals("true"))
+                if (attributes.getValue("mandatory") != null && "true".equals(attributes.getValue("mandatory"))) {
                     mandatory = true;
-                ;
+                }
                 pluginDescriptor.setMandatory(mandatory);
+                if (attributes.getValue("inherit-scope") != null) {
+                    InheritableScope scope = InheritableScope.valueOf(attributes.getValue("inherit-scope")
+                            .toUpperCase());
+                    pluginDescriptor.setInheritScope(scope);
+                }
+                if (attributes.getValue("inheritable") != null && "true".equals(attributes.getValue("inheritable"))) {
+                    pluginDescriptor.setInheritable(true);
+                }
                 pluginDescriptor.setMode(attributes.getValue("mode"));
                 easyAntConfiguration.addSystemPlugin(pluginDescriptor);
             }

Modified: incubator/easyant/core/trunk/src/main/java/org/apache/easyant/tasks/SubModule.java
URL: http://svn.apache.org/viewvc/incubator/easyant/core/trunk/src/main/java/org/apache/easyant/tasks/SubModule.java?rev=1415830&r1=1415829&r2=1415830&view=diff
==============================================================================
--- incubator/easyant/core/trunk/src/main/java/org/apache/easyant/tasks/SubModule.java (original)
+++ incubator/easyant/core/trunk/src/main/java/org/apache/easyant/tasks/SubModule.java Fri Nov 30 20:11:00 2012
@@ -182,6 +182,8 @@ public class SubModule extends AbstractE
 
             ProjectHelper helper = ProjectUtils.configureProjectHelper(subModule);
 
+            getEasyAntEngine().loadSystemPlugins(subModule, false);
+
             LoadModule lm = new LoadModule();
             lm.setBuildModule(file);
             lm.setBuildFile(buildfile);
@@ -293,6 +295,8 @@ public class SubModule extends AbstractE
         addReferences(subModule);
 
         getEasyAntEngine().configureEasyAntIvyInstance(subModule);
+        subModule.addReference(EasyAntMagicNames.PLUGIN_SERVICE_INSTANCE,
+                getProject().getReference(EasyAntMagicNames.PLUGIN_SERVICE_INSTANCE));
 
         subModule.setName(file.getName());
         subModule.setBaseDir(directory);

Modified: 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=1415830&r1=1415829&r2=1415830&view=diff
==============================================================================
--- incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/easyant-config.xsd (original)
+++ incubator/easyant/core/trunk/src/main/resources/org/apache/easyant/core/easyant-config.xsd Fri Nov 30 20:11:00 2012
@@ -15,8 +15,7 @@
    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:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
 
     <xs:element name="easyant-config">
         <xs:complexType>
@@ -27,8 +26,7 @@
                         <xs:attribute name="url" type="xs:string" />
                     </xs:complexType>
                 </xs:element>
-                <xs:element name="system-plugins" minOccurs="0"
-                    maxOccurs="1">
+                <xs:element name="system-plugins" minOccurs="0" maxOccurs="1">
                     <xs:complexType>
                         <xs:sequence>
                             <xs:element name="plugin" minOccurs="0" maxOccurs="unbounded">
@@ -41,6 +39,16 @@
                                     <xs:attribute name="rev" type="xs:string" />
                                     <xs:attribute name="as" type="xs:string" />
                                     <xs:attribute name="mode" type="xs:string" />
+                                    <xs:attribute name="mandatory" type="xs:boolean" />
+                                    <xs:attribute name="inheritable" type="xs:boolean" />
+                                    <xs:attribute name="inherit-scope">
+                                        <xs:simpleType>
+                                            <xs:restriction base="xs:string">
+                                                <xs:enumeration value="BOTH" />
+                                                <xs:enumeration value="CHILD" />
+                                            </xs:restriction>
+                                        </xs:simpleType>
+                                    </xs:attribute>
                                 </xs:complexType>
                             </xs:element>
                         </xs:sequence>
@@ -63,4 +71,4 @@
             </xs:sequence>
         </xs:complexType>
     </xs:element>
-</xs:schema>
+</xs:schema>
\ No newline at end of file