Posts

Showing posts with the label build

Monorepos with Bazel

Image
So this is a hot and problematic subject: Monorepos. IMHO there are good use cases for mono repo when your project is really one thing such as angular. However, there are good use cases for microservices. IMHO we should avoid extremes and just have one big monorepo for the whole company and at the same time avoid having microservices for everything. There is a need to strike some balance between maintenance, isolation, and organization. This is the first post about the monorepos, today I will cover the solution from Google called Bazel . In the next post, I will cover the solution from Facebook called Buck. All posts will have practical videos building mono repo with Java.  IMHO the IDE integration is not ideal for both Bazel and buck. There is some support for VSCode and IDEA but is far from being ok. So Let's take a look at the video.

Global Gradle Config for Remote Debug and IDE support

Image
Gradle right now is the standard tool for Java builds. Before gradle, pretty much everybody was using maven . Working with cloud computing very often we need do remote debugging. In this blog post, I will show how to configure remote debugging for all your gradle projects.  The nice thing about the approach I will show is that you don't need to change your build.gradle files since we will do it as a global config this will be valid for all. We also will setup configs for Eclipse and IntelliJ IDE support in the same file. Since we will configure remote debug you need to keep in mind that debug port need to be open in all security groups and firewalls in order to work.  Keep in mind remote debug is slow especially with Amazon. We will open port 9009, but you can change the port if you like. This config works with Jetty and also with Java main classes as well.

Is Gradle Dynamic resolution strategy safe?

Image
Gradle Dynamic Resolution strategy a.k.a use a + on the dependency is a usable feature.  This is handy because you can do something like spring:spring-core:4.0.+ and gradle will always get the latest snapshop for you -  but them to make this work fine you need people have discipline to do proper major/minor versioning.