0

它关于使用包含多个模块的 maven 构建现有的 EAR。我们有一个 EAR 项目,其中包含 web 和 jar 项目,总共 8 个项目。ear 是使用 RAD 构建的,因此目前没有项目具有 POM 文件。现在我想使用 Maven 进行项目。我想使用 m2eclipse 来创建 POM 和构建。计划创建一个父项目并在其下创建模块,其中包括ear项目和其他项目。所以有效的结构应该如下

工作区

   >parent proj

          >ear project

          >web proj

          >jar1 proj

          >jar2 proj

但是我有包含所有项目的ear文件,如果我在工作空间中导入ear,它会为所有项目创建平面结构,如下所示

工作区

 >web proj

 >jar1 proj

 >jar2 proj

担心是因为 RAD 项目设置和它在工作区中创建的 .metadata 文件。如果我在工作区中创建父项目,然后在父项中导入耳朵,这是一个问题。请告知我该怎么做

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

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

希望我的情况和要求很清楚,请告知

谢谢纳拉扬

4

2 回答 2

1

您不必将 ear 导入父项目,父项目应该只将 ear 作为其 pom 中的模块引用,并显示为父项目中的子目录。
也许我不清楚您所说的import是什么意思。
在父 pom 中声明模块的顺序是它们的构建顺序,因此 ear 应该是列表中的最后一个模块,因为它具有 jar1、jar2 和 web 模块作为依赖项。
web 应该是列表中倒数第二个模块,因为它可能依赖于 jar1 或 jar2 或两者。

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

在这个问题中阅读有关 Maven 反应器的信息。

我建议在你处理你的主要项目之前尝试一个快速原型,请参阅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 完成。

于 2011-03-16T19:11:01.573 回答
1

谢谢@皇冠

我可以使用模块方法代替层次结构。

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

../模块1

../模块2

../模块3

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

于 2011-03-18T23:20:29.960 回答