它涉及使用 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 文件。 如果我在工作区中创建父项目,然后在父项目中导入 Ear,这是一个问题。 请告知我该怎么做
1> 添加父项目的间接,其下方包含ear中的所有项目
2>如何在父项目下添加ear项目,该项目在构建时保存所有模块
希望我的情况和要求很清楚 请提出建议
谢谢 纳拉扬
最佳答案
您不必将ear导入到父项目中,父项目只需将ear作为其pom中的模块引用,并显示为父项目中的子目录。
也许我不清楚你所说的导入是什么意思。
模块在父 pom 中声明的顺序就是它们的构建顺序,因此 Ear 应该是列表中的最后一个模块,因为它有 jar1、jar2 和 web 模块作为依赖项。
web 应该是列表中倒数第二个模块,因为它可能依赖于 jar1 或 jar2 或两者。
M2Eclipse 能够将您在上面描述的多模块项目结构导入为工作区中的单独项目,选择此选项可以防止您必须通过父项目处理每个单独的模块并一直向下扩展。
这不会改变磁盘上的嵌套结构,它只是将每个模块呈现为自己的项目,并且模块目录在父项目中也是可见的。
它还允许单独构建每个模块,或者可以通过构建父项目来执行完整的构建。
阅读 this question 中有关 Maven Reactor 的信息.
我建议在处理主要项目之前尝试一个快速原型(prototype),请参阅http://docs.codehaus.org/display/MAVENUSER/Archetypes+List
Matt Raible 的 appfuse 原型(prototype)确实是很好的示例,请尝试使用以下命令来创建骨架结构:
mvn org.apache.maven.plugins:maven-archetype-plugin:2.0:generate -DgroupId=com.test.archetest -DartifactId=archetest -DarchetypeArtifactId=appfuse-modular-jsf -DarchetypeGroupId=org.appfuse .原型(prototype)
看一下总体项目结构,然后使用 M2Eclipse 导入它,这将生成 eclipse 项目文件。 您还可以通过 mvn eclipse:eclipse 来完成此操作,但这不会为您提供工作区中的单独模块。 有些项目选择不提交 eclipse 项目文件,而是通过上述任一方法从 pom 生成。
如果您使用上面给出的原型(prototype)中的结构,那么您需要向父项目添加一个ear模块,这可以通过M2Eclipse来完成。
关于java - 使用 Maven2 构建现有 EAR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5325798/