вынудите Знатока скопировать зависимости в цель/lib

Многие объяснения уже присутствуют, чтобы объяснить, как это происходит и как это исправить, но вы также должны следовать рекомендациям, чтобы избежать NullPointerException вообще.

См. также: A хороший список лучших практик

Я бы добавил, очень важно, хорошо использовать модификатор final. Использование "окончательной" модификатор, когда это применимо в Java

Сводка:

  1. Используйте модификатор final для обеспечения хорошей инициализации.
  2. Избегайте возврата null в методы, например, при возврате пустых коллекций.
  3. Использовать аннотации @NotNull и @Nullable
  4. Быстрое завершение работы и использование утверждений, чтобы избежать распространения нулевых объектов через все приложение, когда они не должен быть пустым.
  5. Сначала используйте значения с известным объектом: if("knownObject".equals(unknownObject)
  6. Предпочитают valueOf() поверх toString ().
  7. Используйте null safe StringUtils StringUtils.isEmpty(null).

240
задан isapir 29 January 2018 в 06:23
поделиться

6 ответов

Можно использовать Плагин Оттенка для создания uber банки, в которой можно связать все сторонние зависимости.

1
ответ дан Brian Matthews 23 November 2019 в 03:17
поделиться

Если Вы сделаете свой проект, то война или знаток типа уха скопируют зависимости.

2
ответ дан Eduard Wirch 23 November 2019 в 03:17
поделиться

Смотрите на плагин зависимости Знатока , а именно, эти цель dependency:copy-зависимостей . Смотрите на пример в соответствии с заголовком заклинание dependency:copy-зависимостей . Установите свойство outputDirectory конфигурации к $ {basedir}/target/lib (я верю, необходимо будет протестировать).

Hope это помогает.

34
ответ дан Travis B. Hartwell 23 November 2019 в 03:17
поделиться

Лучший подход зависит от того, что Вы хотите сделать:

  • , Если Вы хотите связать свои зависимости в ВОЙНУ или файл EAR, тогда просто, установите упаковочный тип своего проекта к EAR или ВОЙНЕ. Знаток свяжет зависимости в правильное местоположение.
  • , Если Вы хотите создать файл JAR, который включает Ваш код наряду со всеми Вашими зависимостями, затем используйте блок плагин с банка с зависимостями дескриптор. Знаток генерирует полный файл JAR со всеми Вашими классами плюс классы от любых зависимостей.
  • , Если Вы хотите просто вытянуть свои зависимости в целевой каталог в интерактивном режиме, затем используйте зависимость плагин для копирования файлов в.
  • , Если Вы хотите вытянуть в зависимостях для некоторого другого типа обработки, тогда необходимо будет, вероятно, генерировать собственный плагин. Существуют API для получения списка зависимостей и их местоположения на диске. Необходимо будет взять его оттуда...
83
ответ дан informatik01 23 November 2019 в 03:17
поделиться

Это работает для меня:

<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>
252
ответ дан 23 November 2019 в 03:17
поделиться

Вместо добавления еще одного инструмента я предлагаю вам сделать это с помощью того, который вы уже используете: Контроль версий система. Наиболее приличное программное обеспечение для управления версиями поддерживает внешние включения, которые вы можете использовать для обновления ваших плагинов.

Допустим, мы хотим включить последний mousewheel плагин в наш проект SVN, в папке ваших плагинов выполните:

<assembly>
  <id>archive</id>
  <formats>
    <format>zip</format>
  </formats>
  <fileSets>
    <fileSet>
     <directory>${project.build.directory}/appassembler</directory>
     <outputDirectory>/</outputDirectory>
    </fileSet>
  </fileSets>
</assembly>
5
ответ дан 23 November 2019 в 03:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: