We have a large Java 8 Spring Hibernate Maven project that is getting larger.
Problems :
How we work now
Parent |--- Tier1 |--- Tier2 |--- WebTier |---- ModuleA |---- ModuleB |---- ModuleC |---- ... |---- Entities |---- Shared |---- Batch |---- IntegrationTests
WebTier
) as an artefact from Eclipse or IntelliJ to their local TomcatShared
, where modules needing "cross-modules" access put their servicesIdeas to make it better
MessageBroker
module to allow loose coupling where relevant. Maybe JMS, or simply a dumb in-memory component for synchronous communicationShared
moduleEntities
. At least the core-business entities (Customer, CustomerFile, ...). But some entities obviously belong to a single module (a batch execution info would be in the Batch
module)That way, anyone making a change to ModuleA
would most of the time only build and run tests in that module without fearing to break the application.
Questions
Some metrics
Thanks a bunch!
CI would be real answer but it looks that your project is not modular as it should be. You don't build entire project from scratch every time. You build jars, test them in different projects and then use as single items. Each project should be small enough and cover just one area. Do you think that Java builds let's say security jars when they work on io package? Divide and conquer - that's the whole idea of OOP and encapsulation.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With