У меня есть Java-приложение с Maven, имеющее структуру ниже:
parent
| - pom.xml
| - child
| - pom.xml
| - analyzers
| - pmdrules.xml
| - checkstyle.xml
Я настроил PMD и checkstyle в родительском pom.xml. Для PMD наборы правил настраиваются, как показано ниже, и отлично работает как для родительских, так и для дочерних модулей:
<configuration>
<rulesets>
<ruleset>${basedir}/../analyzers/pmdrules.xml</ruleset>
</rulesets>
</configuration>
Однако, для checkstyle, если я настраиваю configLocation таким же образом, он завершается ошибкой либо в родительском, либо в дочернем. Я должен использовать пользовательское свойство, чтобы преодолеть это.
<configuration>
<!-- Below config with ${projectRootDir}, a custom property always pointing to parent root works fine -->
<configLocation>${projectRootDir}/analyzers/checkstyle.xml</configLocation>
<!-- Below configurations with ${basedir} will fail build for child -->
<!--<configLocation>${basedir}/analyzers/checkstyle.xml</configLocation>-->
<!-- Below configurations with ${basedir} will fail build for parent -->
<!--<configLocation>${basedir}/../analyzers/checkstyle.xml</configLocation>-->
</configuration>
Вот образец репродуктора - https://github.com/ramtech123/pocs/blob/master/myapp-parent-module/pom.xml
Я попытался запустить сборку maven в режиме отладки. Из журналов мне кажется, что фактическое выполнение PMD происходит только для дочернего модуля, следовательно, оно проходит без проблем.
Может ли кто-нибудь помочь мне понять основную причину и улучшить мою конфигурацию.
Заранее спасибо.