maven install как установить и развернуть * ONLY * ejb-клиент - PullRequest
0 голосов
/ 17 мая 2018

Я использую maven-ejb-plugin для генерации ejb-клиента для моего клиента стандартным способом

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-ejb-plugin</artifactId>
    <version>2.3</version>
    <configuration>
        <ejbVersion>3.0</ejbVersion>
        <generateClient>true</generateClient>
    </configuration>
</plugin>

Таким образом, клиент использует свою зависимость

<dependency>
    <groupId>en.foo.ejb</groupId>
    <artifactId>artifact-ejb</artifactId>
    <version>1.0.0</version>
    <type>ejb-client</type>         
</dependency>

У меня пока есть 2 проблемы:

  1. Запуск mvn clean install или mvn clean deploy УСТАНОВКА ТАКЖЕ весь jar пакета ejb, так что в итоге у меня будут оба
    • artifact-ejb.jar
    • artifact-ejb-client.jar

Iожидал установить только второй, потому что artifact-ejb.jar не должен быть установлен в хранилище

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

(см. также https://howtodoinjava.com/maven/maven-parent-child-pom-example/)

Как я могу решить эти проблемы?

1 Ответ

0 голосов
/ 17 мая 2018

Ваш artifact-ejb-client.jar содержит только интерфейсы.Во время выполнения вам также необходимо иметь реализации.Поэтому, если вы хотите построить правильное ухо или войну, вам нужно и artifact-ejb-client.jar, и artifact-ejb.jar.Единственное исключение, которое приходит мне в голову, - это RMI-связь, при которой вам будет хорошо иметь только клиента (на вызывающей стороне).Так что подумайте, действительно ли вы хотите сохранить artifact-ejb.jar в своем хранилище.

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

Для родительских пом: Все родительские помы ваших артефактов должны находиться в хранилище, в противном случае сборки будут нарушены.Если вы зависите от артефакта, вам нужно разрешить родительский pom.Его нельзя держать в секрете.

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