Подробная диаграмма дополнительных ключевых слов Maven

задняя часть maven
Подробная диаграмма дополнительных ключевых слов Maven

написать впереди

Я хотел написатьКак настроить стандартный Spring Boot Starter, но для того, чтобы лучше понять некоторые концепции дизайна и ключевые моменты Starter, некоторые детали извлекаются отдельно заранее, чтобы объяснить

В Maven pom.xml вы часто будете видеть код, похожий на следующий, в зависимостях:

<dependency>
  <groupId>sample.ProjectA</groupId>
  <artifactId>Project-A</artifactId>
  <version>1.0</version>
  <scope>compile</scope>
  <optional>true</optional> 
</dependency>

здесь<optional>true</optional>что это означает?

Тайна необязательного ключевого слова

Старые правила, нарисуйте картинку, чтобы проиллюстрировать проблему:

Поскольку проект C использует два класса из проекта A (OptionalFeatureAClass) и класса проекта B (OptionalFeatureBClass), если проект C не зависит от packageA и packageB, компиляция завершится ошибкой.

проект D зависит от проекта C, но для проекта D класс (OptionalFeatureAClass) и класс (OptionalFeatureBClass)является дополнительной функцией, поэтому для того, чтобы окончательный пакет war/ejb не содержал лишних зависимостей, используйте<optional>Объявление текущей зависимости является необязательным и не будет наследоваться другими проектами по умолчанию (например, конечные классы в Java, которые не могут быть унаследованы другими классами).

Что, если проекту D действительно нужно использовать OptionalFeatureAClass в проекте C? Затем нам нужно явно добавить объявление зависимости проекта A в pom.xml проекта D, продолжайте смотреть на следующий рисунок:

Проект D должен использовать OptionalFeatureAClass проекта A, затем ему необходимо явно добавить зависимость от проекта A в файле pom.xml проекта D.

На этом этапе легко понять, почему Maven создает необязательное ключевое слово.Предположим, что это проект по сохранению базы данных (проект C), чтобы адаптироваться к большему количеству типов дизайна постоянства базы данных, таких как дизайн постоянства Mysql (проект A) и Oracle. дизайн персистентности (проект B), когда наш проект (проект D) использует дизайн персистентности проекта C, невозможно ввести и драйвер mysql, и драйвер oracle, поэтому мы должны явно указать один, вот и все

фактический случай

существуетspring-boot-actuatorВ файле pom.xml более 20 зависимостей являются необязательными.

Поскольку Spring Boot не может упаковать ненужные зависимости в ваш окончательный пакет jar, окончательный пакет jar, сгенерированный проектом с использованием привода Spring Boot, не будет содержать этих более 20 зависимых jar-файлов.Если вы хотите использовать какой из них, явно добавьте его к вашему проекту

В следующей статье настройка Spring Boot Starter также является этой стратегией, потому что Starter содержит определенные функции для обслуживания других проектов, аналогичную роли Project C в этой статье.

обратное применение

Если зависимости, введенные Project C, не добавлены<optional>true</optional>, проект D должен зависеть от проекта C, но как насчет классов, которые используют только проект A? У Maven также есть решение, использующее ключевое слово исключения, нечего сказать, предыдущий код поймет:

<dependencies>
    <dependency>
      <groupId>top.dayarch.demo</groupId>
      <artifactId>Project-C</artifactId>
      <exclusions>
        <exclusion>
          <groupId>top.dayarch.demo</groupId>
          <artifactId>Project-B</artifactId>
        </exclusion>
      </exclusions> 
    </dependency>
</dependencies>

Суммировать

На этом этапе, когда вы проектируете функциональные зависимости в будущем, вы должны понимать, как проектировать зависимости.Я рекомендую использовать необязательную форму здесь.Короче говоря, у вас есть все блюда, которые вы разрабатываете, и от которых зависят блюда, которые вы хотите съесть. «Хорошо, тогда мы смоделируем официальный стандарт, чтобы создать собственный стартер…блогПосещения нормализовались, приглашаем к общению

вопрос души

  1. Есть много инструментов сборки, используемых командой проекта детской обуви Gradle, вы знаете, как это представлено в Gradle?
  2. Пользовательский стартер, вы знаете, как выглядит структура официального стандартного стартера?

инструменты повышения производительности


Добро пожаловать, чтобы продолжать обращать внимание на публичный номер: «Сун Гун И Бин».

  • Передовая технология Java для обмена галантереей
  • Резюме эффективных инструментов | Ответ на «Инструменты»
  • Анализ вопроса интервью и ответ
  • Сбор технических данных | Ответ на «данные»

Узнайте о стеке технологий Java легко и весело, думая о чтении детективных романов, и постепенно разлагайте технические проблемы на основе принципов упрощения сложных проблем, превращения абстрактных проблем в конкретные и графические, а технология постоянно обновляется, пожалуйста, продолжайте платить внимание...