Maven зависит от конкретных классов - PullRequest
0 голосов
/ 14 февраля 2012

В следующем сенарио

я обертываю внешний файл jar (прочитал зависимость, которую я не могу контролировать) и оборачиваю в сервис, который будет доступен через RMI.

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

К сожалению, файл оригинального jar содержит много классов, которые не относятся к моей открытой службе.

Возможно ли зависеть только от нескольких классов в этом файле jar в maven (возможно,извлекая и переупаковывая несколько релевантных классов)?

  • uberbig_irrelevant.jar
    • com.uberbig.beans <- нужен этот пакет или несколько классов в нем. </li>
    • com.uberbig.everythingElse

Сервисный проект включает все банки uberbig.Но предоставляет сервис BeanService, который имеет вызов, который возвращает экземпляр com.uberbig.beans.IntrestingLightWeightSerialiasbleBean.

Проект интерфейса сервиса должен иметь определение компонента, которое выглядит как

interface BeanFetcher {
   public IntrestingLightWeightSerialiasbleBean fetchBeanById(long beanId);
}

в идеале мой файл jar serviceInterface должен включать только интерфейс BeanFetcher.Определение IntrestingLightWeightSerialiasbleBean и любых прямых зависимостей IntrestingLightWeightSerialiasbleBean.

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

Любые предложения?

Возможно связанный вопрос Maven зависит от проекта - нет jar, но классы

Может быть, я мог бы использовать что-то иззависимость: копия раздела maven-dependency-plugin , но я не понял, как это сделать.

Ответы [ 2 ]

1 голос
/ 14 февраля 2012

Я думаю, вы правильно поняли плагин, но не цель. Вы должны использовать зависимость: распаковать вместо.

Вы сможете использовать фильтр включения, чтобы извлечь только те классы, которые вам нужны, а затем упаковать их в свой собственный jar. (Jar интерфейса службы, если вы делаете это в проекте интерфейса службы, но вы также можете настроить отдельный проект.)

1 голос
/ 14 февраля 2012

Создайте свой собственный перепакованный jar и поместите его в локальный репозиторий. И надеюсь, что вы действительно определили все зависимости, учли рефлексию и т. Д. ИМО не стоит того.

Вы можете сделать это автоматически (с повышенным риском), используя ProGuard / и т. Д. вытащить неиспользуемые классы и т. д. Это можно сделать и с вашим собственным артефактом, например, сделав банку «все в одном» с помощью jarjar / onejar / и т.д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...