了解跨多个模块的Maven构建

时间:2015-11-24 04:07:50

标签: maven

我认为我误解了插件架构是如何工作的,并且希望有人可以帮助我。这就是我理解Maven的作用:

mvn在目录中运行时,它会将pom.xml文件以及通过层次结构向上的文件读取到超级POM。然后,Maven通过项目的生命周期来运行插件,这些插件将每个阶段/目标与项目中的代码相匹配。因此,如果您在父POM中指定了一个插件,那么该插件将针对子项目运行,就像它仅在子项目中指定一样。

我的构建有3个项目:

proj-parent/                  # Just specifies the modules to build
    pom.xml
proj-java/                    # Normal Java jar project
    pom.xml
    <normal java structure>
proj-php/                     # PHP Yii project
    pom.xml
    src/
        web/
            jars/
            js/
            js-src/
            index.php

我想创建一个包含proj-php/文件子集的distributable以及来自proj-java的jar及其所有依赖项。

这个问题不是关于我的POM的细节,而是关于使用可用插件移动文件的策略。我看过程序集,但它们似乎只关心在给定项目中移动文件而不是从一个项目目标文件夹复制到另一个项目目标文件夹。

我是否应该拥有一个包含指定最终构建路径的变量的属性文件,以便项目知道从每个项目中复制位的位置以便进行分发。我是以正确的方式来做这件事吗?

我曾想过将proj-php/src/web移动到proj-java/src/main并使用程序集将所有3个项目合并为1。但是,这使我的开发环境变得尴尬,因为我使用Eclipse JDT / PDT(分别用于Java和PHP项目)。我同时运行它们,由于它们共享项目根目录,它们会相互冲突。

更新: 有没有人对如何组织我的项目有任何建议,这样我就可以创建一个包含我想要的东西而不需要任何外部脚本的分布。

我想我希望得到以下答案:&#34;你可以摆脱proj-parent并将proj-java/拉成proj-php的依赖关系,然后使用装配以移动该项目中的所有内容。&#34;

当人们有很多需要从多个项目合并的非jar文件时,人们如何组织Maven项目?

1 个答案:

答案 0 :(得分:2)

这是我工作的结构,对我们有用。

proj-parent/                  
|---pom.xml
|---pom.properties <-- if needed
|---proj-java/             
|   |--pom.xml
|   \--<normal java structure>
\---proj-php/                 
    |--pom.xml
    |--src/
    \--web/

那是结构。关于共享依赖的依赖项和项目,我将引荐您访问this站点,这将为您提供快速了解的方法。

如果您有时间,请从同一网页上阅读其他chapters。他们帮助了我很多。