java - maven install 如何安装和部署 *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 个问题:
- 启动
mvn clean install
或mvn clean deploy
安装整个 ejb 包 jar,所以最后我将同时拥有- 工件-ejb.jar
- 工件-ejb-client.jar
我希望只安装第二个,因为 artifact-ejb.jar 不应该安装在存储库中
- ejb 工件包含一个父 pom,因此当客户端尝试解决所有依赖项时,它说在存储库中找不到父 pom,但是它的父级并不意味着分发,因为它只是一个参考。
(另见https://howtodoinjava.com/maven/maven-parent-child-pom-example/)
我该如何解决这些问题?
解决方案
您artifact-ejb-client.jar
仅包含接口。在运行时,您还需要有实现。所以如果你想建立一个适当的耳朵或战争,你需要两个artifact-ejb-client.jar
和artifact-ejb.jar
。我想到的唯一例外是 RMI 通信,您可以只使用客户端(在调用方)。所以考虑一下你是否真的想把它artifact-ejb.jar
排除在你的存储库之外。
如果您决定这样做,请将您的项目拆分为两个单独的项目,一个包含接口,一个包含实现。impl-project 需要 client-project 作为依赖项。然后,您可以自由地构建和部署两者中的一个。
对于父 pom:您的工件的所有父 pom 都需要在存储库中,否则构建将中断。如果你依赖于一个工件,你需要解析它的父 pom。它不能保持“秘密”。
推荐阅读
- java - 在春季防止属性继承
- python - Python PyQt5 - 是否可以在 QTreeView 中添加要按下的按钮?
- javascript - 将天数增加到特定日期时出错
- java - 如何将多个文件写入 Android 设备上的用户可访问目录?
- python - 如何在不止一列上做熊猫样本?
- node.js - 如何从 MEAN 堆栈应用程序的组件 Ts 中的后端获取图像
- database - 通过 SQL 客户端访问 VPC 内的 Redshift
- xml - 日期顺序转换 --> 模式相互干扰
- asp.net - 我在数据库中的现有表中添加了一列,然后在刷新实体框架后,数据表(js)停止工作(服务器 500 错误)
- matplotlib - 如何在风玫瑰上添加补丁?