Maven plugin, empty global variable value provided in POM throws NPE
Lilianne-Blaze opened this issue · 5 comments
Could you please add an option to ignore (treat as empty string?) variables that are set to empty or undeclared properties?
Here's an example:
I have plugin
<groupId>io.github.git-commit-id</groupId>
<artifactId>git-commit-id-maven-plugin</artifactId>
<version>7.0.0</version>
Which sets properties including "${git.build.time}"
I have your plugin with
<vars>
<GIT_BUILD_TIME>${git.build.time}</GIT_BUILD_TIME>
Which is then used in the source like that
log.info("Build time: /*$GIT_BUILD_TIME$*/");
Everything works as intended
Now try to change it to
<GIT_BUILD_TIME></GIT_BUILD_TIME>
or
<GIT_BUILD_TIME>${git.build.timeUNDECLARED}</GIT_BUILD_TIME>
Both result in error:
Failed to execute goal com.igormaznitsa:jcp:7.1.0:preprocess (preprocess-sources) on project lbnet-maven-plugins-launch4j-wrp: Parameter is null -> [Help 1]
I tried < unknownVarAsFalse > true < /unknownVarAsFalse > but apparently it doesn't affect var declarations in pom, only var usage in sources.
Could you please add an option to handle that? " < allowEmptyVarDeclarations > " or something, to have them resolve to empty strings "" instead of throwing an error at buildtime?
p.s. Have I mentioned I really appreciate your work? I never understood why Java devs decided preprocessing is unnecessary.
map with global vars contains null as variable value for empty string so it is bug that the preprocessor gets NPE, I will fix and just will not be adding the variable (with log) and unknownVarAsFalse will be working
I have made fix for NPE so that now it should ignore such empty variable (with log message) and flag unknownVarAsFalse will be working, you can try snapshot version
Thanks,
pom:
<unknownVarAsFalse>true</unknownVarAsFalse>
plus source:
// #ifndef GIT_BUILD_TIME
// #local GIT_BUILD_TIME = "unknown"
// #endif
log.info("Plugin build time: /*$GIT_BUILD_TIME$*/");
works just like it should
If there are no problems with it, could you release it as 7.1.1?
7.1.1 is out