Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This change contributes some improvements to the Gradle build.
The most significant change is the introduction of the
io.spring.dependency-management
plugin. Don't let the name fool you, while this plugin was created for the Spring teams, it's generally applicable for all users of Gradle. This plugin allows you to define adependencyManagement
section (equivalent of the Maven construct of the same name). The information about the dependencies inthat section is then used by each subproject to include dependencies without needing to specify a version number. This solves the problem of keeping groups of dependencies in sync with one another across projects and centralizes all the versions into a single location that can be quickly updated when necessary.
dependencyManagement { dependencies { dependency 'junit:junit:4.12' } }
dependencies { testImplementation 'junit:junit' }
The second important change is the update of projects so that they now use the Gradle
java-library
plugin instead of thejava
plugin. This plugin is more modern, is considered idiomatic and allows much more control of the dependencies that a library exposes in it's POM as compile-time dependencies.Next, the build now minimizes the collection of artifacts that are published to Artifactory and Bintray repositories. Specifically, it ensures that the
rsocket-examples
andrsocket-test
JARs are not published with the rest of the globally useful artifacts.The Artifactory and Bintray configurations have been split out into separate build scripts. This modularity encapsulates each publishing location's configuration and isolates it from the other. It also has the side-benefit of removing noise from the main build script which is much more focused on
compiling code and creating JARs. At this time, I'm pretty confident in the configuration of the Artifactory, Bintray, and Maven Central configurations, but only actual publication to each will be able to verify that there were no regressions.
Finally, dependencies were updated and Gradle configuration was streamlined (removing redundant declaration of defaults) to generally speed up and shrink the build.