Quick Shell Function to Bootstrap a Gradle Groovy Project
2012/02/29Gradle is a great build tool. It’s easy to download and install. If you’re on a mac and have homebrew, it’s as easy as:
brew install gradleIt’s very easy to use with a little experience, but I find having a good starting place to base your work from can help.
Here’s a quick function that I’ve got in my .zshrc to bootstrap a new groovy gradle project in the current directory (it should also work in in a .profile/.bash_profile/.bashrc).
function newgradle() { echo "Creating files for new gradle project" cat <<EOF>.gitignore *.un~ *.iml *.ipr *.iws build .gradle EOF cat <<EOF>build.gradle apply plugin: 'groovy' apply plugin: 'idea' repositories { mavenCentral() } dependencies { groovy 'org.codehaus.groovy:groovy-all:1.8.6' groovy 'org.apache.ivy:ivy:2.2.0' testCompile 'junit:junit:4.10' } task createSourceDirs(description : 'Create empty source directories for all defined sourceSets') << { sourceSets*.allSource.srcDirs.flatten().each { File sourceDirectory -> if (!sourceDirectory.exists()) { println "Making \$sourceDirectory" sourceDirectory.mkdirs() } } } idea { project { jdkName = '1.6' } } EOF gradle createSourceDirs git init ls -a1 && find src # list all created assets }
It creates a build.gradle file ready to work with java and groovy projects, including IDEA integration (just execute gradle idea).
This gives you all of the tasks necessary to compile, jar, test, and distribute your code. For more information, check out the gradle docs on the java, groovy, and idea tasks.
It also creates all the necessary source directories for you and initializes a new git repository (with starting .gitignore file) for you to save your work.
You can easily tweak the build.gradle or .gitignore files to fit your needs. If you don’t use git, you can either delete those lines, or subsitute the equivalent lines for the source control tool you use. These are just a good starting place for me.
Here’s the sample output from the script above:
% mkdir testapp % cd testapp % newgradle Creating files for new gradle project :createSourceDirs Making /Users/tnaleid/Documents/workspace/testapp/src/main/resources Making /Users/tnaleid/Documents/workspace/testapp/src/main/java Making /Users/tnaleid/Documents/workspace/testapp/src/main/groovy Making /Users/tnaleid/Documents/workspace/testapp/src/test/resources Making /Users/tnaleid/Documents/workspace/testapp/src/test/java Making /Users/tnaleid/Documents/workspace/testapp/src/test/groovy BUILD SUCCESSFUL Total time: 2.344 secs Initialized empty Git repository in /Users/tnaleid/Documents/workspace/testapp/.git/ . .. .git .gitignore .gradle build.gradle src src src/main src/main/groovy src/main/java src/main/resources src/test src/test/groovy src/test/java src/test/resources
Then you’ve got all this gradle functionality ready to use:
% gradle tasks :tasks ------------------------------------------------------------ All tasks runnable from root project ------------------------------------------------------------ Build tasks ----------- assemble - Assembles all Jar, War, Zip, and Tar archives. build - Assembles and tests this project. buildDependents - Assembles and tests this project and all projects that depend on it. buildNeeded - Assembles and tests this project and all projects it depends on. classes - Assembles the main classes. clean - Deletes the build directory. jar - Assembles a jar archive containing the main classes. testClasses - Assembles the test classes. Documentation tasks ------------------- groovydoc - Generates Groovydoc API documentation for the main source code. javadoc - Generates Javadoc API documentation for the main source code. Help tasks ---------- dependencies - Displays the dependencies of root project 'test'. help - Displays a help message projects - Displays the sub-projects of root project 'test'. properties - Displays the properties of root project 'test'. tasks - Displays the tasks runnable from root project 'test' (some of the displayed tasks may belong to subprojects). IDE tasks --------- cleanIdea - Cleans IDEA project files (IML, IPR) idea - Generates IDEA project files (IML, IPR, IWS) Verification tasks ------------------ check - Runs all checks. test - Runs the unit tests. Other tasks ----------- cleanIdeaWorkspace createSourceDirs - Create empty source directories for all defined sourceSets Rules ----- Pattern: build<ConfigurationName>: Assembles the artifacts of a configuration. Pattern: upload<ConfigurationName>: Assembles and uploads the artifacts belonging to a configuration. Pattern: clean<TaskName>: Cleans the output files of a task. To see all tasks and more detail, run with --all. BUILD SUCCESSFUL Total time: 4.871 secs


