gpt4 book ai didi

maven-2 - 具有客户端和服务器工件的 Maven (EJB) 项目

转载 作者:行者123 更新时间:2023-12-02 20:37:16 25 4
gpt4 key购买 nike

这是我对“Maven 构建中的多个工件”问题的变体:

我正在从 Ant 移植到 Maven。我的应用程序是一个打包为 EAR 的 EJB 服务器,但它还公开了一个客户端 JAR 供其他客户端应用程序使用。该 jar 包含 EJB 接口(interface)、facade 类和一些帮助程序。

我知道Maven的方式是每个项目有一个工件(POM);但是,这两个工件(服务器 EAR 和客户端 JAR)都需要从同一源树构建 - 服务器和客户端共享,例如 EJB 和“home”接口(interface)。

如何在 Maven 中执行此操作?

我是否有一个项目包含两个 POM,例如 server-pom.xml 和 client-pom.xml?我在想我也可以有一个父 POM (pom.xml),可以用来一举构建客户端和服务器?然而,生命周期在“打包”阶段之后出现了分歧,因为服务器必须经过组装(tar/gzip),而客户端在“打包”之后完成,并且可以简单地安装到存储库中。

关于解决这个问题的最佳方法有什么建议/经验吗?

最佳答案

I know that the Maven way is to have one artifact per project (POM); however, both artifacts (server EAR and client JAR) need to be built from the same source tree - server and client share, for example, the EJB and 'home' interfaces.

“每个项目一个工件”规则有一些异常(exception),EJB 项目就是其中之一。所以,maven-ejb-plugin可以配置为生成 EJB jar 客户端 JAR,如下所示:

  <build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-ejb-plugin</artifactId>
<configuration>
<generateClient>true</generateClient>
</configuration>
</plugin>
</plugins>
</build>

要在另一个项目中使用ejb客户端,只需将其添加为<type>ejb-client</type>的依赖项即可:

<project>
[...]
<dependencies>
<dependency>
<groupId>com.example</groupId>
<artifactId>ejb-project</artifactId>
<version>1.0-SNAPSHOT</version>
<type>ejb-client</type>
</dependency>
</dependencies>
[...]
</project>

参见Generating an EJB client , Using the ejb-client as a dependency以及 ejb mojo 的文档了解更多详细信息(包括如何自定义 ejb 客户端包含/排除的类)。

关于maven-2 - 具有客户端和服务器工件的 Maven (EJB) 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1928996/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com