2011-03-16 27 views
0

它使用包含多个模块的maven构建现有的EAR。 我们有一个EAR项目,其中包含网站和jar项目,共有8个项目。 耳朵是使用RAD构建的,因此目前该项目没有POM文件。 现在我想为项目使用maven。 我想用m2eclipse来创建POM和构建。 plannig创建父项目并在其下创建模块,其中包括ear项目和其他项目。 所以有效的结构应如下使用Maven2构建现有的EAR

工作区

>parent proj 

      >ear project 

      >web proj 

      >jar1 proj 

      >jar2 proj 

,但我有一个包含所有的项目,如果我导入工作空间耳它所有的项目创建flate结构如下图EAR文件

工作区

>web proj 

>jar1 proj 

>jar2 proj 

关注的是监守RAD项目设置,并通过它在工作区中创建.metadata文件。 如果我在工作区中创建父项目,然后在父项中导入它的问题。 请告知我如何能做到以下

1>添加父项目的间接和它下面有耳朵的所有项目

2>如何在其下在构建时

保存所有模块父添加耳朵项目

希望我的情况和需求量的清晰 请告知其

感谢 纳拉扬

回答

1

你不应该IMPO将耳朵插入父项目中,父母应该将耳朵引用为其pom中的模块,并且在父代中显示为子目录。
也许我不清楚你的意思是进口
模块在父pom中声明的顺序是它们的构建顺序,所以ear应该是列表中的最后一个模块,因为它具有jar1,jar2和web模块作为依赖关系。
Web应该是列表中倒数第二个模块,因为它可能取决于jar1或jar2或两者。

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

阅读关于maven reactor在this question

我建议你解决之前,你的主要项目尝试了一个快速原型,见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完成。

+0

请在下面添加1> does not maven reactor负责构建订单2>通过导入我的意思是,我有一个包装的耳朵,其中包含所有项目的源代码...我可以在工作区导入并向所有人添加poms项目..我想添加家长到所有这些项目我该怎么做。 – nBhati 2011-03-16 20:14:11

1

感谢@crowne

,而不是分层结构的,我可以用模块的方式。

包裹所有现有的项目,创建在同一工作区包装类型POM 然后现有的项目可以被添加作为模块,如下的行家项目

../module1

../module2

../module3

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