Author: taher
Date: Sun Mar 12 08:03:43 2017 New Revision: 1786562 URL: http://svn.apache.org/viewvc?rev=1786562&view=rev Log: Implemented: New task pullAllPluginsSource and improvements to plugins API (OFBIZ-9182) Implemented a new gradle task called pullAllPluginsSource which downloads all the official apache OFBiz plugins from source control and places them in the /plugins directory inclusive of their .svn directory. This task makes it possible to automate buildbot for OFBiz with the need to use something like svn:externals and to have two separate build scripts for framework-alone and framework+plugins. The task delete all pre-existing plugins as it needs to download the plugins as a full sub-repository In addition to above mentioned new task, this commit also applies: - Update README.md with new task definition and cleanup - Improve the plugins API in gradle to make use of shared code for calling gradle as a sub-process from multiple locations - minor formatting issues in build.gradle Modified: ofbiz/ofbiz-framework/trunk/README.md ofbiz/ofbiz-framework/trunk/build.gradle Modified: ofbiz/ofbiz-framework/trunk/README.md URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/README.md?rev=1786562&r1=1786561&r2=1786562&view=diff ============================================================================== --- ofbiz/ofbiz-framework/trunk/README.md (original) +++ ofbiz/ofbiz-framework/trunk/README.md Sun Mar 12 08:03:43 2017 @@ -515,14 +515,30 @@ If you need username and password to acc `gradlew pullPlugin -PrepoUrl="http://www.example.com/custom-maven" -PrepoUser=myuser -PrepoPassword=mypassword -PdependencyId="org.apache.ofbiz.plugin:myplugin:0.1.0"` -### Pull a source plugin +### Pull an official plugin from source control -Download a plugin from source control (currently subversion) and place it in -the plugins directory. This is mostly useful when working on the trunk branch -as it requires the latest version of a plugin +Download an official plugin from source control (currently subversion) and place +it in the plugins directory. In addition, this task also executes the "install" +task if it is defined for the plugin being downloaded. + +This task is mostly useful when working on the trunk branch +as it pulls in the latest version of a plugin `gradlew pullPluginSource -PpluginId=ecommerce` +### Pull all official plugins from source control + +Download all officially supported plugins from source control (currently subversion) +and place them inclusive of their ".svn" directory in /plugins. WARNING! This task +deletes the /plugins directory and replaces it with the official plugins. + +`gradlew pullAllPluginsSource` + +This task makes it easy to download and develop officially supported plugins. It is +mostly used by developers or individuals working on the trunk branch. We do not +recommend using this task on releases of OFBiz, instead consider using the "pullPlugin" +task to get the correct version of a plugin compatible with your release. + ### Install a plugin If you have a plugin called mycustomplugin and want to install it in OFBiz follow the Modified: ofbiz/ofbiz-framework/trunk/build.gradle URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/build.gradle?rev=1786562&r1=1786561&r2=1786562&view=diff ============================================================================== --- ofbiz/ofbiz-framework/trunk/build.gradle (original) +++ ofbiz/ofbiz-framework/trunk/build.gradle Sun Mar 12 08:03:43 2017 @@ -513,14 +513,14 @@ task createPlugin(group: ofbizPlugin, de if (!project.hasProperty('basePermission')) { ext.basePermission = pluginId.toUpperCase() } - + def filterTokens = ['component-name': pluginId, 'component-resource-name': pluginResourceName, 'webapp-name': webappName, 'base-permission': basePermission] def templateDir = "${rootDir}/framework/resources/templates" def pluginDir = "${pluginsDir}/${pluginId}" - + mkdir pluginDir mkdir pluginDir+"/config" mkdir pluginDir+"/data" @@ -543,7 +543,7 @@ task createPlugin(group: ofbizPlugin, de mkdir pluginDir+"/webapp/${webappName}/WEB-INF" mkdir pluginDir+"/webapp/${webappName}/WEB-INF/actions" mkdir pluginDir+"/widget/" - + generateFileFromTemplate(templateDir+"/ofbiz-component.xml", pluginDir, filterTokens, "ofbiz-component.xml") generateFileFromTemplate(templateDir+"/TypeData.xml", pluginDir+"/data", @@ -584,12 +584,12 @@ task createPlugin(group: ofbizPlugin, de filterTokens, "${pluginResourceName}Forms.xml") generateFileFromTemplate(templateDir+"/build.gradle", pluginDir, filterTokens, "build.gradle") - + println "plugin successfully created in directory ${pluginsDir}/${pluginId}." } } -task installPlugin(group: ofbizPlugin, description: 'activate a plugin and run its install task if it exists') { +task installPlugin(group: ofbizPlugin, description: 'executes plugin install task if it exists') { doFirst { if (!project.hasProperty('pluginId')) { @@ -598,22 +598,22 @@ task installPlugin(group: ofbizPlugin, d } if (project.hasProperty('pluginId')) { - if (subprojectExists(":plugins:${pluginId}")) { - if (taskExistsInproject(":plugins:${pluginId}", 'install')) { - dependsOn ":plugins:${pluginId}:install" - doLast { println "installed plugin ${pluginId}" } - } else { - doLast { println "No install task defined for plugin ${pluginId}" } - } - } else { - doLast { - installPlugin pluginId + iterateOverActiveComponents { component -> + if (component.name == pluginId) { + if (subprojectExists(":plugins:${pluginId}")) { + if (taskExistsInproject(":plugins:${pluginId}", 'install')) { + dependsOn ":plugins:${pluginId}:install" + doLast { println "installed plugin ${pluginId}" } + } else { + doLast { println "No install task defined for plugin ${pluginId}" } + } + } } } } } -task uninstallPlugin(group: ofbizPlugin, description: 'run the uninstall task if exists for a plugin and deactivate it') { +task uninstallPlugin(group: ofbizPlugin, description: 'executes plugin uninstall task if it exists') { doFirst { if (!project.hasProperty('pluginId')) { @@ -626,6 +626,9 @@ task uninstallPlugin(group: ofbizPlugin, if (project.hasProperty('pluginId') && taskExistsInproject(":plugins:${pluginId}", 'uninstall')) { dependsOn ":plugins:${pluginId}:uninstall" + doLast { println "uninstalled plugin ${pluginId}" } + } else { + doLast { println "No uninstall task defined for plugin ${pluginId}" } } } @@ -689,7 +692,7 @@ task pullPlugin(group: ofbizPlugin, desc if (!project.hasProperty('dependencyId')) { throw new GradleException('You must pass the dependencyId of the plugin') } - + // Connect to a remote maven repository if defined if (project.hasProperty('repoUrl')) { repositories { @@ -704,12 +707,12 @@ task pullPlugin(group: ofbizPlugin, desc } } } - + // download plugin and dependencies dependencies { ofbizPlugins dependencyId } - + // reverse the order of dependencies to install them before the plugin def ofbizPluginArchives = new ArrayList(configurations.ofbizPlugins.files) Collections.reverse(ofbizPluginArchives) @@ -722,7 +725,7 @@ task pullPlugin(group: ofbizPlugin, desc from zipTree(pluginArchive) into "${pluginsDir}/${pluginId}" } - installPlugin pluginId + gradlewSubprocess(['installPlugin', "-PpluginId=${pluginId}"]) } } } @@ -737,7 +740,41 @@ task pullPluginSource(group: ofbizPlugin dependsOn pullPluginFromSvn } doLast { - installPlugin pluginId + gradlewSubprocess(['installPlugin', "-PpluginId=${pluginId}"]) + } +} + +task pullAllPluginsSource(group: ofbizPlugin, + description: 'Download and install all plugins from source control. Warning! deletes existing plugins') { + + task pullPluginsFromSvn(type: SvnCheckout) { + svnUrl = "https://svn.apache.org/repos/asf/ofbiz/ofbiz-plugins/trunk" + workspaceDir = "${rootDir}/temp" + doLast{ + delete "${rootDir}/plugins" + ant.move(file: "${rootDir}/temp", toFile: "${rootDir}/plugins") + } + } + dependsOn pullPluginsFromSvn + + task installAllPlugins { + file("${rootDir}/plugins").eachDir { plugin -> + iterateOverActiveComponents { component -> + if (component.name == plugin.name) { + if (subprojectExists(":plugins:${plugin.name}")) { + if (taskExistsInproject(":plugins:${plugin.name}", 'install')) { + dependsOn ":plugins:${pluginId}:install" + doLast { println "installed plugin ${plugin.name}" } + } else { + doLast { println "No install task defined for plugin ${plugin.name}" } + } + } + } + } + } + } + doLast { + gradlewSubprocess(['installAllPlugins']) } } @@ -1016,7 +1053,9 @@ def taskExistsInproject(fullyQualifiedPr return taskExists } -def installPlugin(pluginId) { +def gradlewSubprocess(commandList) { def gradleRunner = os.contains('windows') ? 'gradlew.bat' : './gradlew' - exec { commandLine gradleRunner, '--no-daemon', 'installPlugin', "-PpluginId=${pluginId}" } + def fullCommand = [gradleRunner, "--no-daemon"] + fullCommand.addAll(commandList) + exec { commandLine fullCommand } } |
Free forum by Nabble | Edit this page |