我认为我误解了插件架构是如何工作的,并且希望有人可以帮助我。这就是我理解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项目?