我得到了一个maven项目来编译并部署到tomcat服务器上。在今天之前,我从未使用过maven,但我在谷歌上搜索了不少。这个项目中的顶级pom.xml文件似乎将打包类型设置为pom。
我应该做什么mvn安装后得到这个应用程序部署?我希望能在某个地方找到战争文件或其他东西,但我想我找错了地方或错过了一个步骤。
我得到了一个maven项目来编译并部署到tomcat服务器上。在今天之前,我从未使用过maven,但我在谷歌上搜索了不少。这个项目中的顶级pom.xml文件似乎将打包类型设置为pom。
我应该做什么mvn安装后得到这个应用程序部署?我希望能在某个地方找到战争文件或其他东西,但我想我找错了地方或错过了一个步骤。
当前回答
我建议在http://maven.apache.org/guides/getting-started/index.html#How_do_I_build_more_than_one_project_at_once上查看经典示例
这里my-webapp是web project,它依赖于my-app project中的代码。因此,要将两个项目捆绑为一个,我们有顶级的pom.xml,它提到了最后要捆绑的项目(根据maven术语,模块)。这种顶级pom.xml可以使用pom打包。
My-webapp可以有war包装,也可以依赖于my-app。My-app可以有罐子包装。
其他回答
将工件打包为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插件。
现实生活用例
在一家java含量很高的公司,我们有一个python项目,需要进入一个Nexus工件存储库。Python并没有二进制文件,所以我只是想把Python文件压缩成。tar或。zip然后推送。这个repo已经集成了maven,所以我们使用了<packaging>pom</packaging>指示符和maven程序集插件来将python项目打包为.zip文件并上传。
这篇SO文章概述了这些步骤
Pom打包只是一个说明主要工件不是war或jar,而是Pom .xml本身的规范。
它通常与“模块”一起使用,这些模块通常包含在项目的子目录中;但是,它也可以用于某些场景,即不需要构建主二进制文件,所有其他重要工件都声明为次要工件
想想一个“文档”项目,主要工件可能是一个PDF,但它已经构建好了,将其声明为次要工件的工作可能比告诉maven如何构建一个不需要编译的PDF的配置更重要。
为了简单地回答您的问题,当您执行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
https://maven.apache.org/pom.html
父和聚合(多模块)项目的打包类型必须是pom。这些类型定义了绑定到一组生命周期阶段的目标。例如,如果打包是jar,那么打包阶段将执行jar:jar目标。如果打包是pom,执行的目标将是site:附件-描述符