Augmenting ExtJS with Gradle
ExtJS is pretty nice, overall, and it comes with a powerful build tool – Sencha Cmd.
Running builds with it can be tedious, because it doesn’t have any up-to-date checks – it constantly rebuilds stuff it doesn’t need. Oh, the time wasting!
As it turns out, Sencha Cmd is an Ant-based build tool. Which means we can create Gradle builds that augment it – given us support for such things as up-to-date checks.
Like this:
|
ant.importBuild 'build.xml' |
|
|
|
def packages_dir = file('../packages') |
|
|
|
clean { |
|
doLast { delete 'bootstrap.js', 'bootstrap.css', 'bootstrap.json' } |
|
} |
|
|
|
refresh { |
|
inputs.dir 'app' |
|
inputs.file 'app.json' |
|
packages_dir.listFiles().each() { package_dir -> inputs.dir new File(package_dir, 'src') } |
|
|
|
outputs.file file('bootstrap.js') |
|
outputs.file file('bootstrap.json') |
|
} |
|
|
|
js { |
|
inputs.dir 'app' |
|
packages_dir.listFiles().each() { package_dir -> inputs.dir new File(package_dir, 'src') } |
|
outputs.file file("../build/${this.property('build.environment')}/${projectName}/app.js") |
|
} |
|
|
|
resources { |
|
inputs.dir 'resources' |
|
packages_dir.listFiles().each() { package_dir -> inputs.dir new File(package_dir, 'resources') } |
|
outputs.file file("../build/${this.property('build.environment')}/${projectName}/resources") |
|
} |
|
|
|
sass { |
|
inputs.dir 'sass' |
|
packages_dir.listFiles().each() { package_dir -> inputs.dir new File(package_dir, 'sass') } |
|
outputs.file file("../build/${this.property('build.environment')}/${projectName}/resources/${projectName}-all.css") |
|
outputs.file file('bootstrap.css') |
|
} |
|
|
|
page { |
|
// what are the inputs to page, I wonder? |
|
// the outputs are the microloader.js and the index.html... |
|
} |
|
# the default Build Environment. Production is the default for Sencha Cmd. |
|
# Use -Dbuild.environment on the command line to change, otherwise it doesn't get passed to the ant build properly |
|
build.environment=production |
|
|
|
# The project name. Should match what is in the app.json file |
|
projectName=MyApp |
Share and Enjoy!
Like this:
Like Loading...