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