Running Gradle inside Maven

As organizations evolve so do their codebases. Apache Maven and Gradle are the most popular and widely used build tools in the JVM. Usually multi-project builds rely on a single build tool to accomplish the job but there may be uses cases where you need to combine both, having Maven be the one leading the pack. One possible use case is to build a companion Gradle plugin, this is the case for ByteBuddy and Quarkus; another use case is to run a composite build with Maven and Gradle projects mixed together. In this post I’ll show how Gradle can be Read More


Composite builds with Maven and Gradle

Gradle offers a neat feature called “Composite Builds” which allows one project to consume artifacts from other builds as if they were part of a single coherent unit. This feature is pretty easy to setup, however you might not know that it’s possible to do the same with Maven. Here’s how. Let’s say you have a producer and consumer projects, where producer is set as a dependency on consumer. If these two projects are to have their own release lifecycles their file structure may look like this The contents of the Gradle build files look like so And in the Read More


Multi-module project builds with Maven and Gradle

Just came back from wonderful JCreteยฎ 2018. This year didn’t disappoint, we had close to 110 people openly sharing ideas and knowledge on both technical and soft skills matters. Here’s a picture of the final schedule, captured by fellow Java Champion Badr Elhouari: If you are wondering what was the schedule of @JCreteUnconf 2018! Really ๐Ÿ’œ my first #JCrete & #Unconference experience ๐Ÿคฉ brilliant people with top notch content. Thanks a lot for all the disorganizers @heinzkabutz @javaperftuning @rgransberger @aalmiray @IXSC & others ๐Ÿ‘๐Ÿ’ช๐Ÿ‘Œ pic.twitter.com/iHk0dxSqle โ€” Badr Elhouari (@badrelhouari) July 26, 2018 Every single one of those notes represents a Read More


Customize JAR manifest entries with Maven/Gradle

How many times have you found yourself in a situation where you can’t tell if the artifacts used by the application are the correct ones or not? How many times have you looked at a bug report stating that the problem is caused by version X of a particular artifact but you are certain the bug was fixed in said release? On closer inspection (after unpacking, debugging, even decompiling!) you find that the artifact in production is not the right one even though the version appears to be the correct one. One option we have to mitigate this problem is Read More


Maven scopes vs. Gradle configurations

Both Maven and Gradle are popular choices when it comes to building Java projects. These tools share common traits but there are some key differences that make you more productive depending on a particular scenario (no, I’m not referring to the XML DSL vs. Groovy/Kotlin DSL schism), case in point scopes vs. configurations. Scopes and configurations are used by each tool to define dependencies and how they affect different classpaths, such as the compilation and runtime classpaths. Maven defines 6 scopes: compile, runtime, provided, system, test, and import. Gradle on the other hand defines the following configurations when the Java Read More


ˆ Back To Top