我得到了一个maven项目来编译并部署到tomcat服务器上。在今天之前,我从未使用过maven,但我在谷歌上搜索了不少。这个项目中的顶级pom.xml文件似乎将打包类型设置为pom。
我应该做什么mvn安装后得到这个应用程序部署?我希望能在某个地方找到战争文件或其他东西,但我想我找错了地方或错过了一个步骤。
我得到了一个maven项目来编译并部署到tomcat服务器上。在今天之前,我从未使用过maven,但我在谷歌上搜索了不少。这个项目中的顶级pom.xml文件似乎将打包类型设置为pom。
我应该做什么mvn安装后得到这个应用程序部署?我希望能在某个地方找到战争文件或其他东西,但我想我找错了地方或错过了一个步骤。
Pom基本上是一个子模块的容器,每个子模块都由与Pom .xml相同目录下的子目录表示。
在某个地方,嵌套在项目结构中,您将发现带有战争包装的工件(模块)。Maven通常将所有内容构建到每个模块的/target子目录中。所以在mvn安装后,在一个带有war打包的模块中查找目标子目录。
当然,
$ find . -iname "*.war"
工作同样好;-)。
pom的打包用于聚合其他项目的项目中,以及那些唯一有用的输出是来自某些插件的附加工件的项目中。在您的情况下,我猜您的顶级pom包括<modules>…</modules>聚合其他目录,实际输出是其他目录(可能是子目录)的结果。如果为了这个目的进行合理的编码,它就会有一种战争的包装。
为了简单地回答您的问题,当您执行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打包只是一个说明主要工件不是war或jar,而是Pom .xml本身的规范。
它通常与“模块”一起使用,这些模块通常包含在项目的子目录中;但是,它也可以用于某些场景,即不需要构建主二进制文件,所有其他重要工件都声明为次要工件
想想一个“文档”项目,主要工件可能是一个PDF,但它已经构建好了,将其声明为次要工件的工作可能比告诉maven如何构建一个不需要编译的PDF的配置更重要。
将工件打包为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插件。
POM(项目对象模型)不过是构建项目的自动化脚本,我们可以用XML编写自动化脚本, 构建脚本文件在不同的自动化工具中有不同的名称
比如ANT里的build.xml, MAVEN里的pom.xml
MAVEN可以包装罐子,战争,耳朵和POM,这是我们所有人的新事物
如果你想检查什么是POM.XML
我建议在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可以有罐子包装。
现实生活用例
在一家java含量很高的公司,我们有一个python项目,需要进入一个Nexus工件存储库。Python并没有二进制文件,所以我只是想把Python文件压缩成。tar或。zip然后推送。这个repo已经集成了maven,所以我们使用了<packaging>pom</packaging>指示符和maven程序集插件来将python项目打包为.zip文件并上传。
这篇SO文章概述了这些步骤
“pom”包装只是容器,它包含其他包/模块,如jar、war和ear。
如果你在外部包/容器上执行任何操作,比如MVN清洁编译安装。然后内部包/模块也得到干净的编译安装。
不需要为每个包/模块单独执行操作。
https://maven.apache.org/pom.html
父和聚合(多模块)项目的打包类型必须是pom。这些类型定义了绑定到一组生命周期阶段的目标。例如,如果打包是jar,那么打包阶段将执行jar:jar目标。如果打包是pom,执行的目标将是site:附件-描述符