Does this mean that the client artifact should have a runtime dependency on the impl artifact?
There is no and no addiction (or it should not be better). Take a look at the import instructions in the classes and interfaces of client artifacts, and you will see that the client artifact is implementation-independent.
If the client is implementation dependent, it will violate the dependency inversion principle, which is part of the SOLID principles.
Or should these “circular” dependencies be avoided, even if one direction compiles and the other runs time?
Actually, an implementation is required at runtime, but this is a matter of building components. Maybe someone wants to replace the implementation once or for testing reasons. Therefore, it would be nice to imagine the maven dependency in a client artifact with an implementation just to simplify component layout.
Instead, you should declare the implementation dependency in the EAR deployment module, because the EAR is an enterprise application assembly.
EDIT
Our developers complain that to make sure that each client has the appropriate implant in their ear is tedious manual work. Each one looks for client artifacts in the dependency: list, adds all the relevant impl artifacts, dependency dependency: the list again, again adds all the missing artifacts, etc.
I think they perceive the role of JEE development , the phrase.
A software developer performs the following tasks to deliver an EAR file containing a Java EE application:
Collects the EJB JAR and WAR files created in the previous steps into a Java EE application (EAR) file
Specifies a Java EE application deployment descriptor (optional)
Verifies that the contents of the EAR file are well-formed and consistent with the Java EE specification
However, the specification also says
The assembler or deployer can edit the deployment descriptor directly or use tools that correctly add XML tags according to interactive selections.
I would say that a ear pom is an example of describing an assembly using a tool.
JF Meier also mentioned
Some developers write scripts for this process, but again, after changing the versions of some ejbs, you need to repeat the process because, perhaps somewhere deep in the dependency tree, ejb clients were deleted or added, so additional imms may be required.
For me, these scripts are the same as ear pom. Perhaps more flexible, but at the cost of standards and conventions. The fact that they have to update scripts with each version clearly shows that it would be better if these versions were also updated by maven.
Also ... Since the earpom is just a maven artifact, it can also be deployed to the repository. This is better than private scripts, which no one except the author has access to.
I hope that these arguments will help you when discussing your deployment strategy with your colleagues.