Details
Description
I work on an application whose version number includes a '+' character which becomes part of the filename for the jars created in the build process. This application uses several custom log4j2 plugins contained in the jar which are discovered via the packages tag in the xml Configuration. We also generate a plugin map using the exec-maven-plugin command documented in the Extending log4j section of the log4j2 documentation. This command prints the following during the build:
ERROR StatusLogger Could not search jar file '/src/program-1.2.3 build127/util/target/util-1.2.3 build127.jar' for classes matching criteria: annotated with @Plugin file not found
The actual path to the jar is '/src/program-1.2.3+build127/util/target/util-1.2.3+build127.jar'
I examined the source for ResolverUtil and in the method findInPackage (line 225), URLDecoder.decode is called unilaterally even for file: URLs. The javadoc for this class says the character + is converted to space, which is inappropriate for a file: URL.