Answers:
pom
基本上是子模块的容器,每个子模块由pom.xml
与pom
包装相同的目录中的子目录表示。
嵌套在项目结构中的某个地方,您会发现带有war
包装的工件(模块)。Maven通常将所有内容构建到/target
每个模块的子目录中。因此,在mvn install
查看target
带有war
包装的模块中的子目录之后。
当然:
$ find . -iname "*.war"
同样有效;-)。
的打包pom
用于汇总其他项目的项目中,以及仅有用输出是某些插件附带的工件的项目中。在你的情况,我会想你的顶层POM包括<modules>...</modules>
聚合其他目录,而实际输出是其他(可能是子)目录之一的结果。如果为此目的进行了合理的编码,它将带有的包装war
。
为了简单地在执行mvn:install时回答您的问题,maven将基于(pom.xml中的包装属性)创建打包的工件。运行maven安装后,您可以找到带有.package扩展名的文件
将工件打包为POM意味着它具有非常简单的生命周期
package -> install -> deploy
http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html
如果您要部署pom.xml文件或与其他包装类型不匹配的项目,这将非常有用。
我们将pom打包用于许多项目,并视情况绑定额外的阶段和目标。
例如,我们的某些应用程序使用:
prepare-package -> test -> package -> install -> deploy
当您mvn安装该应用程序时,应将其添加到本地.m2存储库中。要在其他地方发布,您将需要设置正确的发行管理信息。如果Maven不会自动附加工件,那么您可能还需要使用Maven Builder帮助程序插件。
我建议在以下位置查看经典示例:http : //maven.apache.org/guides/getting-started/index.html#How_do_I_build_more_than_one_project_at_once
这里my-webapp是Web项目,它取决于my-app项目中的代码。因此,要将两个项目捆绑在一起,我们有顶层pom.xml,其中提到了最后要捆绑的项目(根据maven术语定义的模块)。这样的顶级pom.xml可以使用pom打包。
my-webapp可以具有战争包装,并且可以依赖my-app。my-app可以使用jar包装。
现实生活中的用例
在一家Java繁多的公司中,我们有一个python项目,需要进入Nexus工件存储库。Python确实没有工件,因此只需要将.tar或.zip python文件推入即可。该仓库已经与Maven集成,因此我们使用了<packaging>pom</packaging>
带有maven程序集插件的指示符将python项目打包为.zip
并上传。
该SO帖子概述了这些步骤
https://maven.apache.org/pom.html
对于父项目和聚合(多模块)项目,包装类型必须为pom。这些类型定义了绑定到一组生命周期阶段的目标。例如,如果包装为jar,则包装阶段将执行jar:jar目标。如果包装是pom,则执行的目标将是site:attach-descriptor
POM(Project Object Model)只是用于构建项目的自动化脚本,我们可以用XML编写自动化脚本,构建脚本文件在不同的自动化工具中以不同名称命名
就像我们在ANT中调用build.xml,在MAVEN中调用pom.xml
MAVEN可以包装罐子,罐子,耳朵,POM,这对我们所有人来说都是新事物
如果要检查什么是POM.XML