grpc-core contains internal, unstable APIs. To prevent accidentally mis-matching artifact versions (say grpc-netty-0.12.0 coming from one source of dependencies and grpc-core-0.13.0 coming from another), any artifacts that depend on grpc-core should use [$VERSION] syntax instead of $VERSION to cause an error (because grpc-netty-0.12.0 can only use grpc-core-0.12.0; core shouldn't be silently upgraded) instead of runtime failure. Note that #1447 improves things, since something like grpc-stub and grpc-protobuf could depend just on grpc-api instead of a version-fixed grpc-core.
The syntax seems to be supported by Maven, maybe Gradle, and Ivy, but we may need to do some verification and additional investigation, since it isn't commonly used.
grpc-core contains internal, unstable APIs. To prevent accidentally mis-matching artifact versions (say grpc-netty-0.12.0 coming from one source of dependencies and grpc-core-0.13.0 coming from another), any artifacts that depend on grpc-core should use [$VERSION] syntax instead of $VERSION to cause an error (because grpc-netty-0.12.0 can only use grpc-core-0.12.0; core shouldn't be silently upgraded) instead of runtime failure. Note that #1447 improves things, since something like grpc-stub and grpc-protobuf could depend just on grpc-api instead of a version-fixed grpc-core.
The syntax seems to be supported by Maven, maybe Gradle, and Ivy, but we may need to do some verification and additional investigation, since it isn't commonly used.
Other resources: http://www.mojohaus.org/versions-maven-plugin/examples/resolve-ranges.html http://guntherpopp.blogspot.com/2011/02/understanding-maven-dependency.html http://guntherpopp.blogspot.com/2011/03/understanding-maven-dependency.html