spring-cloud / spring-cloud-dataflow

A microservices-based Streaming and Batch data processing in Cloud Foundry and Kubernetes
https://dataflow.spring.io
Apache License 2.0
1.11k stars 581 forks source link

Switch to Gradle build system #4020

Closed donbeave closed 4 years ago

donbeave commented 4 years ago

Actually it's just a question, not really feature request. I want to know if there will be any planned changes in the future or not.

It looks like Spring itself already migrating from Maven to Gradle, most of the popular projects already did this migration:

1) Spring Boot: https://github.com/spring-projects/spring-boot 2) Spring Framework: https://github.com/spring-projects/spring-framework 3) Spring Security: https://github.com/spring-projects/spring-security 4) Spring Session: https://github.com/spring-projects/spring-session 5) Spring AMQP: https://github.com/spring-projects/spring-amqp ...

So how about cloud projects? Will Spring Cloud Data Flow will also follow this trend or not?

I found myself in a position where using Maven as a build system is not very convenient, that's why I'm asking this question.

jvalkeal commented 4 years ago

For a whole dataflow ecosystem it would be a big change as we have a bit too much build time dependencies to various maven plugins, parent poms, etc. Personally I like gradle more than maven as gradle makes so many things much more easier. Boot and framework itself are monorepos so move to gradle was a relatively easy process, not so much in spring-cloud where we have such a complex project structure.

At some point we probably need to think about this as pom structure is a bit complex and deep and is already causing some issues when i.e. dataflow itself is used as an library either in a maven/gradle project.

mminella commented 4 years ago

The Cloud piece of the portfolio has no plans to move to Gradle at this time. The Spring team leaves that decision to each project's maintainers. I'd be interested in hearing more about how using Maven as a build system is not very convenient. Given the wrapper, I'm interested in hearing more about what the actual inconveniences are.

donbeave commented 4 years ago

Nothing is impossible of course, mostly Maven can do all things what can do with Gradle, but in some cases using Gradle much move comfortably, for example, when I need to customize smth, I always can use Groovy/Kotlin. IDEA support also looks better (probably some bug in the latest IDEA), but it shows some classes with red color, but classes are available and when I run Maven cmd directly will not get any compilation issue:

image

Another, actually, the most inconvenient is dependency download speed. Gradle using multiple threads to download dependencies and store them in one cache, Maven is using another way to store cache, which leads to re-download actually already downloaded dependencies. I mean already downloaded by Gradle. Gradle daemon is also quite fast, recompilation is super fast with all enabled caches.

donbeave commented 4 years ago

I think can close this issue, it's just a question. Thank you @jvalkeal @mminella for your answers!