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

我应该做什么mvn安装后得到这个应用程序部署?我希望能在某个地方找到战争文件或其他东西,但我想我找错了地方或错过了一个步骤。


当前回答

“pom”包装只是容器,它包含其他包/模块,如jar、war和ear。

如果你在外部包/容器上执行任何操作,比如MVN清洁编译安装。然后内部包/模块也得到干净的编译安装。

不需要为每个包/模块单独执行操作。

其他回答

现实生活用例

在一家java含量很高的公司,我们有一个python项目,需要进入一个Nexus工件存储库。Python并没有二进制文件,所以我只是想把Python文件压缩成。tar或。zip然后推送。这个repo已经集成了maven,所以我们使用了<packaging>pom</packaging>指示符和maven程序集插件来将python项目打包为.zip文件并上传。

这篇SO文章概述了这些步骤

https://maven.apache.org/pom.html

父和聚合(多模块)项目的打包类型必须是pom。这些类型定义了绑定到一组生命周期阶段的目标。例如,如果打包是jar,那么打包阶段将执行jar:jar目标。如果打包是pom,执行的目标将是site:附件-描述符

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

package -> install -> deploy

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

如果您正在部署一个pom.xml文件或一个不适合其他打包类型的项目,这是非常有用的。

我们对我们的许多项目使用pom包装,并适当地绑定额外的阶段和目标。

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

prepare-package -> test -> package -> install -> deploy

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

为了简单地回答您的问题,当您执行mvn:install时,maven将基于(pom.xml中的打包属性)创建一个打包的工件。运行maven install后,您可以找到扩展名为.package的文件

In target directory of the project workspace Also where your maven 2 local repository is search for (.m2/respository) on your box, Your artifact is listed in .m2 repository under (groupId/artifactId/artifactId-version.packaging) directory If you look under the directory you will find packaged extension file and also pom extension (pom extension is basically the pom.xml used to generate this package) If your maven project is multi-module each module will two files as described above except for the top level project that will only have a pom

Pom基本上是一个子模块的容器,每个子模块都由与Pom .xml相同目录下的子目录表示。

在某个地方,嵌套在项目结构中,您将发现带有战争包装的工件(模块)。Maven通常将所有内容构建到每个模块的/target子目录中。所以在mvn安装后,在一个带有war打包的模块中查找目标子目录。

当然,

$ find . -iname "*.war"

工作同样好;-)。