# Project-wide Gradle settings.

# IDE (e.g. Android Studio) users:
# Gradle settings configured through the IDE *will override*
# any settings specified in this file.

# For more details on how to configure your build environment visit
# http://www.gradle.org/docs/current/userguide/build_environment.html

# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
# org.gradle.parallel=true

GROUP=com.uber.nullaway
VERSION_NAME=0.7.6-SNAPSHOT

POM_DESCRIPTION=A fast annotation-based null checker for Java

POM_URL=https://github.com/uber/NullAway/
POM_SCM_URL=https://github.com/uber/NullAway/
POM_SCM_CONNECTION=scm:git:git://github.com/uber/NullAway.git
POM_SCM_DEV_CONNECTION=scm:git:ssh://git@github.com/uber/NullAway.git

POM_LICENCE_NAME=The MIT License
POM_LICENCE_URL=https://opensource.org/licenses/MIT
POM_LICENCE_DIST=repo

POM_DEVELOPER_ID=msridhar
POM_DEVELOPER_NAME=Manu Sridharan
