maven安装如何安装和部署* ONLY * ejb-client

时间:2018-05-17 09:34:22

标签: java maven ejb

我使用 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 installmvn clean deploy安装整套ejb包装罐,所以最后我会同时安装
    • artifact-ejb.jar
    • 伪影的EJB-client.jar中
  2. 我希望只安装第二个,因为artifact-ejb.jar不应该安装在存储库中

    1. ejb工件包含父pom ,因此当客户端尝试解析所有依赖关系时,它说无法在存储库中找到父pom ,但父级它并不意味着分发,因为它只是一个参考。
    2. (另见https://howtodoinjava.com/maven/maven-parent-child-pom-example/

      我该如何解决这些问题?

1 个答案:

答案 0 :(得分:1)

您的artifact-ejb-client.jar仅包含接口。在运行时,您还需要具有实现。因此,如果你想建立适当的耳朵或战争,你需要artifact-ejb-client.jarartifact-ejb.jar。我想到的唯一例外是RMI通信,你可以很好地只有客户端(在主叫端)。因此,请考虑一下您是否真的希望将artifact-ejb.jar保留在存储库之外。

如果您决定这样做,请将项目拆分为两个单独的项目,一个包含接口,另一个包含实现。 impl项目需要客户端项目作为依赖项。然后,您可以自由地构建和部署两者中的一个。

对于父poms:工件的所有父poms都需要在存储库中,否则构建将中断。如果依赖于工件,则需要解析其父pom。它不能保持“秘密”。