Salesforce Gradle Plugin
As part of the Salesforce Wear Developer Pack for Android Wear I created a Gradle plugin that fetches and deploys Salesforce code (Apex). Gradle is the default build tool for Android but it can also be used with many other languages. For instance, here is an example build.gradle file for a project that fetches all of the Apex classes and Visualforce pages:
buildscript {
repositories {
mavenLocal()
mavenCentral()
}
dependencies {
classpath 'com.jamesward:force-gradle-plugin:0.1'
}
}
apply plugin: 'force'
repositories {
mavenLocal()
mavenCentral()
}
force {
username = forceUsername
password = forcePassword
unpackagedComponents = ["ApexPage": "*", "ApexClass": "*"]
}
The unpackagedComponents definition uses the Salesforce Metadata Types and pulls everything specified down into the src/main/salesforce/unpackaged directory when you run the forceMetadataFetch Gradle task. The forceMetadataDeploy Gradle task deploys everything in the src/main/salesforce/unpackaged directory to Salesforce.
Try this out:
-
Create a new project directory containing the
build.gradleabove -
In your project directory create a new file named
gradle.propertiescontaining your Salesforce username & password:forceUsername=foo@bar.com forcePassword=password -
Fetch your Salesforce Metadata:
gradle forceMetadataFetch -
Make a change and deploy the Metadata:
gradle forceMetadataDeploy
For a complete example check out the Visualforce + AngularJS + Bootstrap project.
All of the code for the Salesforce Gradle Plugin is on GitHub: https://github.com/jamesward/force-gradle-plugin
Let me know what you think. Thanks!