gradle-common-deps-plugin

Gradle plugin that provides convenience closure for configuring common dependencies

License

License

Categories

Categories

Gradle Build Tools
GroupId

GroupId

com.github.saadfarooq
ArtifactId

ArtifactId

gradle-common-deps-plugin
Last Version

Last Version

0.1.4
Release Date

Release Date

Type

Type

jar
Description

Description

gradle-common-deps-plugin
Gradle plugin that provides convenience closure for configuring common dependencies
Project URL

Project URL

https://github.com/saadfarooq/gradle-common-deps-plugin
Source Code Management

Source Code Management

https://github.com/saadfarooq/gradle-common-deps-plugin

Download gradle-common-deps-plugin

How to add to project

<!-- https://jarcasting.com/artifacts/com.github.saadfarooq/gradle-common-deps-plugin/ -->
<dependency>
    <groupId>com.github.saadfarooq</groupId>
    <artifactId>gradle-common-deps-plugin</artifactId>
    <version>0.1.4</version>
</dependency>
// https://jarcasting.com/artifacts/com.github.saadfarooq/gradle-common-deps-plugin/
implementation 'com.github.saadfarooq:gradle-common-deps-plugin:0.1.4'
// https://jarcasting.com/artifacts/com.github.saadfarooq/gradle-common-deps-plugin/
implementation ("com.github.saadfarooq:gradle-common-deps-plugin:0.1.4")
'com.github.saadfarooq:gradle-common-deps-plugin:jar:0.1.4'
<dependency org="com.github.saadfarooq" name="gradle-common-deps-plugin" rev="0.1.4">
  <artifact name="gradle-common-deps-plugin" type="jar" />
</dependency>
@Grapes(
@Grab(group='com.github.saadfarooq', module='gradle-common-deps-plugin', version='0.1.4')
)
libraryDependencies += "com.github.saadfarooq" % "gradle-common-deps-plugin" % "0.1.4"
[com.github.saadfarooq/gradle-common-deps-plugin "0.1.4"]

Dependencies

compile (1)

Group / Artifact Type Version
com.android.tools.build : gradle jar 1.3.0

Project Modules

There are no modules declared in this project.

Android Arsenal

Gradle Common Dependencies Plugin

This plugin provides convenient opt-in/opt-outs for commonly used dependencies. Right now it's targeting Android only. Hopefully, we'll expand it over time.

Usage

  1. Add the following to your build.gradle

    buildscript {
       repositories {
          mavenCentral()
       }
    
       dependencies {
          classpath 'com.github.saadfarooq:gradle-common-deps-plugin:{version}'
       }
    }
    
    repositories {
       mavenCentral()
    }
    
    apply plugin: 'com.android.application'
    apply plugin: 'com.github.saadfarooq.commondeps'

    alternatively, you can use the new plugin syntax for gradle 2.1+

    plugins {
       id "com.github.saadfarooq.commondeps" version "<latestVersion>"
    }
  2. Define the dependencies in the commonDeps closure (Following is the complete listing and will serve as documentation of dependencies as they are added.

    // Enable a dependency by either specifying `true` to install the default version 
    // or a version string to include a particular version
    commonDeps {
        support {
            libsVersion '23.1.0`
            support true
            appcompat true
            cardview false
            design false
            palette false
        }
        gps {
             ads true
             analytics true
             base true
             cast true
             games true
             gcm true
             fitness true
             identity true
             location true
             maps true
             nearby true
             panorama true
             plus true
        }
        butterknife '7.0.1' // you can also specify true to use latest version
        picasso true
        timber true
        glide true
        jodatime true // installs joda-time Android
        testing {
            robolectric true
            junit true
        }
    }

The plugin adds the dependencies to the compile configuration

Contributing

The library is pretty simple and contributing should be relatively easy if you follow the steps below:

  1. Think of a dependency you commonly use and that you think is popular enough to merit inclusion

  2. Determine appropriate build.gradle closure level to use for said dependency. Most dependencies will go in the commonDeps top level closure. Others, such as Google support libraries go in sub-levels. Assume you decided to add xyz dependency to the commonDeps top level closure. (Follow the examples for new closure addition in CommonDepsPlugin if you need to create new sub-closure)

  3. Add a method corresponding to the name you want to use in the build file. For xyz add a method named xyz that takes an argument version. This method is called during the build process when the closure is parsed.

  4. Create string field corresponding to the property you want to add in the Extension object. My convention is to name this the same as the method name / build property name, in our assumption xyz.

  5. Add the default version for that property to the DefaultVersions file.

  6. Simply call the Util.setDepProperty with the group name, artifact id, version argument passed to the method and DefaultVersion reference. e.g. xyz = Util.setDepProperty('com.xyz', 'xyz', version, DefaultVersion.XYZ). This method add the appropriate dependency to the project depending on the argument passed.

  7. Following a test pattern from CommonDepsPluginTest to add a test for your newly added dependency.

  8. Add example usage in README.md. This is important so visitors know what dependencies are available. The gradle closure properties are not discoverable at this point.

  9. Make a PR.

  10. Go forth and prosper.

License

Copyright 2015 Saad Farooq

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

Versions

Version
0.1.4
0.1.3
0.1.2
0.1.1
0.1.0