Real world example: WebLogic delivers webserviceclient+ssl.jar.
It is no problem to create a POM file for this artifact with as "weblogic:webserviceclient+ssl:188.8.131.52" and deploy this with the prepared POM into the repository. It is also no problem to deploy artifacts with a prepared POM that declare a dependency to this artifact. However, if this artifact is declared as direct dependency to a project the build fails immediately with :
 'dependencies.dependency.artifactId' with value 'webserviceclient+ssl' does not match a valid id pattern.
and worse, if the artifact is a transitive dep, you only get a non-explaining warning and all other dependencies of the "transitive artifact" are dropped:
[WARNING] POM for 'com.company:artifact-name:pom:47.11:runtime' is invalid. It will be ignored for artifact resolution. Reason: F
ailed to validate POM for project com.company:artifact-name at Artifact [com.company:artifact-name:pom:47.11:runtime]
The deploy plugin has to validate the (also a generated) POM before deploying an artifact with deploy:deploy-file.
BTW: I suppose the install plugin has the same issue with install:install-file. However, I also suppose the code is shared