繁体   English   中英

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

[英]maven install how to install and deploy *ONLY* ejb-client

我正在使用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 install还需要整个ejb软件包jar,因此最后我将同时拥有
    • 神器- ejb.jar
    • 神器的EJB-client.jar中

我希望只安装第二个,因为不应将artifact-ejb.jar安装在存储库中

  1. ejb工件包括一个父pom ,因此,当客户端尝试解析所有依赖项时,它说在存储库中找不到该父pom ,但是父pom并不意味着可以分发,因为它只是一个引用。

(另请参阅https://howtodoinjava.com/maven/maven-parent-child-pom-example/

我该如何解决这些问题?

您的artifact-ejb-client.jar仅包含接口。 在运行时,您还需要实现。 因此,如果您想建立适当的耳朵或战争,则需要artifact-ejb-client.jarartifact-ejb.jar 我想到的唯一例外是RMI通讯,在这种情况下,只有客户端(在呼叫方)就可以了。 因此,请考虑一下您是否真的想将artifact-ejb.jar保留在存储库之外。

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

对于父poms:工件的所有父poms必须位于存储库中,否则构建会中断。 如果依赖工件,则需要解决其父pom。 它不能被保持为“秘密”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM