使用Maven2构建现有EAR

时间:2011-03-16 13:13:04

标签: java maven-2 build ear rebuild

关于使用包含多个模块的maven构建现有EAR。 我们有一个EAR项目,其中包含8个项目的web和jar项目。 ear是使用RAD构建的,因此目前没有项目的是POM文件。 现在我想将maven用于项目。 我想使用m2eclipse来创建POM和构建。 plannig创建一个父项目并在其下创建模块,其中包括ear项目和其他项目。 如此有效的结构应如下所示

工作区

   >parent proj

          >ear project

          >web proj

          >jar1 proj

          >jar2 proj

但我有包含所有项目的ear文件,如果我在工作区导入ear,它会为所有项目创建flate结构,如下所示

工作区

 >web proj

 >jar1 proj

 >jar2 proj

关注的是RAD项目设置和它在工作区中创建的.metadata文件。 如果我在工作区中创建父项目,然后在父项中导入耳朵就会出现问题。 请告知我如何做以下

1>添加父项目的间接,在下面它包含所有项目

2>如何在父级下添加ear项目,该项目在构建时保存所有模块

希望我的情况和要求是明确的 请告知它

由于 纳拉

2 个答案:

答案 0 :(得分:1)

您不必将耳朵导入父项目,父项应该将耳朵作为模块引用到其pom中,并显示为父项目中的子目录。
也许我不清楚 import 的含义。
在父pom中声明模块的顺序是它们的构建顺序,因此ear应该是列表中的最后一个模块,因为它有jar1,jar2和web模块作为依赖项。
web应该是列表中的第二个最后一个模块,因为它可能取决于jar1或jar2或两者。

M2Eclipse能够将您在上面描述的多模块项目结构导入工作空间中的单独项目,选择此选项可以防止您通过父项目处理每个单独的模块并一直向下扩展。
这不会改变磁盘上的嵌套结构,它只是将每个模块显示为它们自己的项目,并且模块目录在父项目中也是可见的。
它还允许单独构建每个模块,或者可以通过构建父项目来执行完整构建。

this question中了解maven reactor。

我建议您在解决主要项目之前尝试快速原型,请参阅http://docs.codehaus.org/display/MAVENUSER/Archetypes+List

Matt Raible的appfuse原型是非常好的例子,尝试下面的命令来创建一个骨架结构:

mvn org.apache.maven.plugins:maven-archetype-plugin:2.0:generate -DgroupId=com.test.archetest -DartifactId=archetest -DarchetypeArtifactId=appfuse-modular-jsf -DarchetypeGroupId=org.appfuse.archetypes

查看一般项目结构,然后使用M2Eclipse导入它,这将生成eclipse项目文件。 您也可以通过mvn eclipse:eclipse执行此操作,但这不会为您提供工作区中的单独模块。 有些项目选择不提交eclipse项目文件,而是通过上述任何一种方法从pom生成。

如果您使用上面给出的原型中的结构,那么您需要将一个ear模块添加到父项目中,这可以通过M2Eclipse来完成。

答案 1 :(得分:1)

谢谢@crowne

而不是分层结构我可以使用模块方法。

包装所有现有项目,在同一工作区中创建包装类型pom的maven项目 然后可以将现有项目添加为模块,如下所示

../ module1

../ module2

../ module3

指定的路径总是相对于声明模块的pom的位置。