首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >带有客户端和服务器构件的Maven (EJB)项目

带有客户端和服务器构件的Maven (EJB)项目
EN

Stack Overflow用户
提问于 2009-12-18 15:52:23
回答 2查看 16.7K关注 0票数 10

下面是我对“来自Maven构建的多个工件”问题的修改:

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

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

我怎么在Maven做这件事?

我是否有一个包含两个POMs的项目,比如server-pu.xml和Client-pu.xml?我在想,我也可以有一个父POM (pom.xml),它可以用一个错误的陷阱来构建客户端和服务器?但是,生命周期在“包”阶段之后会出现差异,因为服务器必须通过程序集(tar/gzip),而客户端是在“包”之后完成的,可以简单地安装到存储库中。

对于处理这一问题的最佳方法有何建议/经验?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-12-18 19:21:45

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

“每个项目一个工件”规则有一些例外,EJB项目就是其中之一。因此,可以将maven-ejb插件配置为生成EJB ,并将配置为客户机jar,如下所示:

代码语言:javascript
代码运行次数:0
运行
复制
  <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>的依赖项添加即可。

代码语言:javascript
代码运行次数:0
运行
复制
<project>
  [...]
  <dependencies>
    <dependency>
      <groupId>com.example</groupId>
      <artifactId>ejb-project</artifactId>
      <version>1.0-SNAPSHOT</version>
      <type>ejb-client</type>
    </dependency>
  </dependencies>
  [...]
</project>

有关更多细节,请参见生成EJB客户端将ejb-客户机用作依赖项ejb mojo文档(包括如何自定义包含/排除在ejb mojo客户机中的类)。

票数 18
EN

Stack Overflow用户

发布于 2009-12-18 16:03:19

我以前用过多模块项目来解决这个问题。

代码语言:javascript
代码运行次数:0
运行
复制
project/
    pom.xml  <- type=pom, lists sub modules
    ejb/
        src/main/java, etc.
        pom.xml <- type=ejb, describes ejb module, has dependency on "jar" module
    jar/ 
        src/main/java, etc.
        pom.xml <- type=jar, simple, builds jar
    ear/ 
        pom.xml <- type=ear, has reference to ejb module that it should use
    ...

我已经将这种方法用于非常复杂的项目,这些项目可能有十几个必须一起构建的不同模块。请参见耳医生引用该ejb。

父pom.xml使用modules标记:

代码语言:javascript
代码运行次数:0
运行
复制
<modules>
    <module>jar</module>
    <module>ejb</module>
    <module>ear</module>
</modules>

子表的parent标记是:

代码语言:javascript
代码运行次数:0
运行
复制
<parent>
    <groupid>mygroup</group>
    <artifactId>parentName</artifactId>
</parent>
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1928996

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档