The options are:
- break your larger utility library in smaller libraries
- use a larger library everywhere
There are pros and cons to each approach.
With 1., you end up having eventually a smaller effective installed component but you increase the level of coordination and you need more work and ceremony: for each library you may need a new repository, a new component descriptor (in your case a new POM), a new README or documentation, a new setup for tests and continuous integration, a new versioning and release cycle. So you may end up having less code redistributed but at the cost of more boilerplate. But this approach is rational from a pure engineering standpoint.
With 2., you have eventually a larger effective installed component but you did not duplicate the boilerplate and did not do extra work. This is a pragmatic approach.
With 1., if you have a highly automated workflow, the extra costs may seem minimal to you and if you are the only user of this code this may work OK. But when you work as a team and the utilities are reused and maintained by several other, you increase the coordination costs for every user by introducing a new component.
There are other ways though where you could have the best of both and limit the duplication of boilerplate and efforts:
You could keep a single repo and limit the boilerplate by having multiple components descriptors for each sub-library to build: for instance you could keep a single code tree but have multiple POMs (but since POMs beg to be named
pom.xml this may not be practical in your special case). Or you could have a single POM and build two Jars from it.
You could adjust the build of your 150 LOC client to extract only the subset of classes you effectively use from this utility library and vendor/re-bundle them in the built Jar (possibly using something like Maven Shade).
Personally, I tend to prefer keeping things simple and keep a single larger utility library. Yet, I may start to break things up in smaller components when there is a clear and well defined subset that ends up being reused individually by at least three other components. I would not bother just for a single usage.