Многие объяснения уже присутствуют, чтобы объяснить, как это происходит и как это исправить, но вы также должны следовать рекомендациям, чтобы избежать NullPointerException
вообще.
См. также: A хороший список лучших практик
Я бы добавил, очень важно, хорошо использовать модификатор final
. Использование "окончательной" модификатор, когда это применимо в Java
Сводка:
final
для обеспечения хорошей инициализации. @NotNull
и @Nullable
if("knownObject".equals(unknownObject)
valueOf()
поверх toString (). StringUtils
StringUtils.isEmpty(null)
. Можно использовать Плагин Оттенка для создания uber банки, в которой можно связать все сторонние зависимости.
Если Вы сделаете свой проект, то война или знаток типа уха скопируют зависимости.
Смотрите на плагин зависимости Знатока , а именно, эти цель dependency:copy-зависимостей . Смотрите на пример в соответствии с заголовком заклинание dependency:copy-зависимостей . Установите свойство outputDirectory конфигурации к $ {basedir}/target/lib (я верю, необходимо будет протестировать).
Hope это помогает.
Лучший подход зависит от того, что Вы хотите сделать:
Это работает для меня:
<project>
...
<profiles>
<profile>
<id>qa</id>
<build>
<plugins>
<plugin>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<phase>install</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/lib</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>
Вместо добавления еще одного инструмента я предлагаю вам сделать это с помощью того, который вы уже используете: Контроль версий система. Наиболее приличное программное обеспечение для управления версиями поддерживает внешние включения, которые вы можете использовать для обновления ваших плагинов.
Допустим, мы хотим включить последний mousewheel плагин в наш проект SVN, в папке ваших плагинов выполните:
<assembly>
<id>archive</id>
<formats>
<format>zip</format>
</formats>
<fileSets>
<fileSet>
<directory>${project.build.directory}/appassembler</directory>
<outputDirectory>/</outputDirectory>
</fileSet>
</fileSets>
</assembly>