什么是maven的“pom”包装?

问题

我得到了一个maven项目来编译并部署在tomcat服务器上。我从来没有在今天之前使用过maven,但我一直在谷歌搜索。看起来这个项目中的顶级pom.xml文件的包装类型设置为pom

mvn install之后我应该怎么办才能部署这个应用程序?我原以为能够在某处或某处找到awar文件,但我想我正在寻找错误的地方或错过了一步。


#1 热门回答(113 赞)

pom基本上是子模块的容器,每个子模块由同一目录中的子目录aspom.xmlwithpompackaging表示。

在某个地方,嵌套在项目结构中,你将找到带有warpackaging的工件(模块)。 Maven通常将每个模块的所有内容构建到/target个子目录中。所以aftermvn install在一个带有warpackaging的模块中查看4886962543子目录。

当然:

$ find . -iname "*.war"

同样有效;-)。


#2 热门回答(31 赞)

pom打包只是一个规范,声明主要工件不是war或jar,而是pom.xml本身。

它通常与"模块"结合使用,"模块"通常包含在相关项目的子目录中;但是,它也可能用于某些不需要构建主二进制文件的场景中,所有其他重要工件都被声明为次要工件

想想"文档"项目,主要工件可能是PDF,但它已经构建完成,并且可能需要在配置上将其声明为辅助工件的工作告诉maven如何构建不需要的PDF编译。


#3 热门回答(17 赞)

打包pom用于聚合其他项目的项目,以及仅有用输出是来自某个插件的附加工件的项目。在你的情况下,我是猜测你的顶级pom包括<modules>...</modules>聚合其他目录,实际输出是其他(可能是子目录)之一的结果。如果为此目的合理编码,它将具有war的包装。