2016-12-01 6 views
4

Если вы заявляете зависимость в Maven, вы можете добавить тип, например war, jar, ejb.Зависимость в Maven: Каков эффект типа ejb?

Я понимаю, что компиляция проекта с типом ejb отличается от компиляции проекта с помощью jar-типа, поскольку он запускает другой жизненный цикл.

Но какова разница в объявлении зависимости?

Maven dependency type ejb vs jar, похоже, задает тот же вопрос, но принятый ответ кажется мне странным. Я сомневаюсь, что тип зависимости может вызвать жизненный цикл. На самом деле, я бы ожидал, что тип ejb и jar типа делают то же самое. Может ли кто-нибудь пролить свет на это?

+1

Возможно, может быть добавлено больше мыслей, но да, они должны вести себя точно так же и различаться только для целей «документации» (например, в исходном коде поставщика maven-ether) (https://github.com/apache/maven/blob/maven-3.3.9/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenRepositorySystemUtils.java#L115-L116)). Другой жизненный цикл запускается, когда у вас есть проект с упаковкой EJB i.e. ' ejb', а не зависимость от EJB. – Tunaki

ответ

0

Я сомневаюсь, что тип в зависимости может вызвать жизненный цикл

Вы не одиноки сомневаться.

Когда вы объявляете зависимость с ejb типа, Вы получаете выгоду от некоторых средств, предоставляемых Maven, связанных с ejb как:

  • возможность добавить декларацию EJB в application.xml. Поскольку Java EE 5 больше не требуется.

  • проверить, что зависимость EJB, а не простой JAR.

  • и, возможно, некоторые другие незначительные вещи.

Вы бы не эти средства, если вы объявляете вашу зависимость с банкой type.

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

Вы не относитесь к ejb-client типу, но часто бывает что-то более интересным, так как в отличие от случая в зависимости от типа jar или ejb, который использует ту же банку, когда вы объявляете ejb-client типа в зависимости, вы зависите от другой банки, что классическая банка, так как эта банка должна содержать только классы API для вызова ejb.
Конечно, если нам нужна версия ejb-client нашего ejb, мы должны указать ее в артефакте, который производит ejb.