Java EE7和Maven工程入门(3),ee7maven
Java EE7和Maven工程入门(3),ee7maven
目录
- 一个简单Maven工程的结构
- 建立一个简单的WAR工程
- 定义ejb services模块和jpa实体模块
本文开始讲述第三部分。我们已经有了一个父pom并且已经为我们的war模块定义好了pom。在原来的设置中,我们已经定义了应用程序将要包含一个以ejb jar包的形式的service jar包。我们的企业级java bean,尤其是会话bean就放那里。我们还定义了另一个主管实体bean(数据库展现bean)的模块(层),即所谓的域模型。
定义service(ejb)模块
在父pom文件夹下,我们新建一个子目录,就像我们处理war模块一样。在这个文件夹里面我们创建一个包含以下内容的pom.xml文件。文件夹的名字为sample-services。这个pom看起来就是这样。就目前而言,最终和下面的内容差不多:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>gr.javapapo</groupId> <artifactId>sample-parent</artifactId> <version>0.0.1-SNAPSHOT</version> </parent> <artifactId>sample-services</artifactId> <name>sample-services</name> <description>EJB service layer</description> <packaging>ejb</packaging> <build> <finalName>${project.artifactId}</finalName> </build> <dependencies> <dependency> <groupId>javax</groupId> <artifactId>javaee-api</artifactId> </dependency> </dependencies> </project>
记得我们已经在父pom的依赖管理部分(dependency management)定义过了javaee-api jar包的版本,在插件管理部分(plugin management)还需要一个maven插件来专门负责打包我们ejb.jar。它就是maven-ejb-plugin。可以回到父pom中,查找以上两点。由于这些元素都定义在了父pom里,所以我们的ejb service pom看起来就小多了。按照惯例,Maven将负责大多数东西。maven的ejb插件将踢开,因为我们已经定义了需要此模块的包是“ejb”。
我们的工程结构看起来是这个样子的:

工程结构
定义实体bean(ejb)模块
在父pom文件夹下,我们新建一个子目录,就像我们处理上面的ejb模块一样。我们将其命名为sample-domain。这个模块里,我们将依据JPA2规范来编写我们的数据库展现bean,即所谓的实体bean。
这个pom看起相当的简单。
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>gr.javapapo</groupId> <artifactId>sample-parent</artifactId> <version>0.0.1-SNAPSHOT</version> </parent> <artifactId>sample-domain</artifactId> <packaging>ejb</packaging> <name>sample-domain</name> <description>JPA entities for our project - domain model</description> <build> <finalName>${project.artifactId}</finalName> </build> <dependencies> <dependency> <groupId>javax</groupId> <artifactId>javaee-api</artifactId> </dependency> </dependencies> </project>
包仍然是ejb,因为它将主管EJB类,即所谓的实体bean。
由于这个模块将“主管”我们的域对象,所以还有另外一个我们需要一起打包的东西,一个叫做persistence.xml的xml描述符。它定义了我们的应用将连接的数据源。在Java EE7里面,这个文件已经简化了许多,我们甚至可以略过数据源的定义,因为已经有一个默认的数据源。参考这里。从包装的角度来看,现在你需要做的就是在src/main/resources
文件夹下新建一个名为META-INF的文件夹,并在里面放置persistence.xml文件,如下图所示:
persistence.xml的内容在这点上不相关(我们将在下个帖子中关注这部分内容),你可以在这个帖子的git分支找到一个例子。
关于目录创建需要注意:如果你使用一个诸如Eclipse或者Intellij这样的IDE来添加maven模块,一旦你创建了一个新的模块并定义一个POM,IDE会根据Maven约定自动创建你的模块该有的标准目录结构。如果你按照这些帖子来并且你使用一个更简单的工具,例如一个简单的文本编辑器来写的你的代码,那么你就必须自己创建src/main目录结构。
以上就是这个帖子的所有内容了,我们已经为我们的应用添加了至少两个模块,但是我们仍然缺少一个打包所有东西的ear模块。我们还没有涉及到模块的“内部依赖”,这些是我们将要做的。在后面的“ear”专题里,所有的模块都将集中起来。
在post3标签下bitbucket工程里可以找到这些简单的pom代码。
原文链接: javacodegeeks 翻译: Wld5.com - micah译文链接: http://www.wld5.com/11741.html
[ 转载请保留原文出处、译者和译文链接。]
用户点评