什么是maven的"pom"包装?

Der*_*rek 164 java tomcat maven

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

mvn install为了部署这个应用程序,我该怎么做?我本来希望能找到war某个地方或某个地方的文件,但我想我正在寻找错误的地方或错过了一步.

Tom*_*icz 139

pom基本上是子模块的容器,每个子模块由pom.xmlpom包装相同的目录中的子目录表示.

在某个地方,嵌套在项目结构中,您会发现带有war包装的工件(模块).Maven通常将所有内容构建到/target每个模块的子目录中.所以在mvn install查看target带有war包装的模块中的子目录之后.

当然:

$ find . -iname "*.war"
Run Code Online (Sandbox Code Playgroud)

同样有效;-).


Edw*_*uck 44

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

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

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

  • PDF的有用示例.谢谢 (2认同)

bma*_*ies 21

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

  • “其唯一有用的输出是来自某个插件的附加工件”是什么意思? (3认同)

Pra*_*nti 8

要在执行mvn:install时简单回答您的问题,maven将根据(pom.xml中的打包属性)创建一个打包的工件,运行maven安装后,您可以找到扩展名为.package的文件

  • 在项目工作区的目标目录中
  • 此外,您的maven 2本地存储库在您的盒子上搜索(.m2/respository),您的工件列在.m2存储库(groupId/artifactId/artifactId-version.packaging)目录下
  • 如果你查看目录下你会发现打包扩展文件和pom扩展名(pom扩展名基本上是用于生成此包的​​pom.xml)
  • 如果你的maven项目是多模块的,那么每个模块都会有两个文件,如上所述,除了顶级项目只有一个pom


Jam*_*gan 8

将工件打包为POM意味着它具有非常简单的生命周期

package -> install -> deploy
Run Code Online (Sandbox Code Playgroud)

http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html

如果要部署pom.xml文件或不适合其他打包类型的项目,这将非常有用.

我们在许多项目中使用pom包装,并根据需要绑定额外的阶段和目标.

例如,我们的一些应用程序使用:

prepare-package -> test -> package -> install -> deploy
Run Code Online (Sandbox Code Playgroud)

当你安装应用程序时,它应该将它添加到你的本地.m2存储库.要在其他地方发布,您需要设置正确的分发管理信息.如果Maven没有自动附加工件,您可能还需要使用maven构建器帮助程序插件.


Vis*_*hal 6

我建议在以下位置查看经典示例: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 可以有war包并且可以依赖my-app。my-app 可以有 jar 包装。