MQTT 5.0 analytics platform, greenfield project build, part seven (Using Gradle - why?)

What does a modern software delivery process look like?  As many different models exist as there are developers, this is one view...

Consider a group of different processes:

Id  Task OverviewNote
1Producing code
2Producing test cases
3Producing business requirements
4Producing documentation
5Producing the software that supports the codeBuild scripts, deployment scripts
6Supporting the hardware that supports the codeDesktops/laptops/switches/firewall
7Design/product managementDeciding when, how and what to build
8ImplementationGet the software working, build shims and adapters
9SupportKeep clients happy

Note that the above is referring to an old fashioned deployed software vendor or in-house build and deploy.  

A SaaS/multi-tenant model looks different and we will cover that at a later date.

Just looking at two aspects today:

The anti-pattern that is the configuration file.

Packaging dependencies

The anti-pattern that is the configuration file...

Consider the typical deployment pattern of design-build-test-integrate-deploy.  Yet changes to configuration files often slip outside of this cycle.  While that may be convenient, it's a backdoor to delivering untested code paths to production.

Hence - package the configuration inside the .jar file and then force a code deployment for all changes to the process - whether it's a code change or a configuration change.

Packaging dependencies

Dependencies cane be something of a mess in the world of Java. So, why not wrap them all up into one big fat jar file.  And then no more messing around with the command line and other techniques to get the right dependencies used by Java.  Just use Shadow as a plug-in to Gradle and the output of your build process is a "fat jar" that includes all of the dependencies in one big file.

So, Gradle can help remove these problems and make the deployment and support process more efficient. Hence why Gradle was used for the MQTT project and for other projects where we have provided technology consulting. 

Other tools are available, your mileage might vary...



See also:

https://github.com/AlignmentSystems/CodeGen

Comments