Чтобы найти ответ на ваш вопрос, я создал приложение Spring REST с maven
и с помощью следующей команды:
mvn clean install -X
My build.log
содержал следующую отладочную информацию:
[DEBUG] Command line options:
... -g -nowarn -target 1.8 -source 1.8 -encoding UTF-8
Как мы видим, опция -g
присутствует по умолчанию, которая генерирует отладочную информацию, включая локальные переменные.
Чтобы доказать обратное, я обновил конфигурацию maven-compiler-plugin
с помощью следующей опции:
-g:none
Пример конфигурации:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<compilerArgument>-g:none</compilerArgument>
</configuration>
</plugin>
</plugins>
</build>
После этого мой веб-сервис начал выдавать ошибку:
java.lang.IllegalArgumentException: Name for argument type [java.lang.String] not
available, and parameter name information not found in class file either.
Похоже, что maven-compiler-plugin
включаетопция -g
по умолчанию.И это позволяет Spring получать имена параметров во время выполнения.