Java “什么是”呢;pom“;用maven包装?
我得到了一个maven项目来编译并部署到tomcat服务器上。今天之前我从未使用过maven,但我一直在谷歌上搜索。似乎此项目中的顶级Java “什么是”呢;pom“;用maven包装?,java,tomcat,maven,Java,Tomcat,Maven,我得到了一个maven项目来编译并部署到tomcat服务器上。今天之前我从未使用过maven,但我一直在谷歌上搜索。似乎此项目中的顶级pom.xml文件的打包类型设置为pom 在mvn安装之后,我应该做什么才能部署此应用程序?我本来希望能在某处或某处找到一个war文件,但我猜我找错了地方或错过了一个步骤。pom基本上是一个子模块的容器,每个子模块由一个子目录表示,该目录与pom.xml具有pom打包 在某个地方,嵌套在项目结构中,您会发现带有war打包的工件(模块)。Maven通常将所有内容构建
pom.xml
文件的打包类型设置为pom
在
mvn安装之后,我应该做什么才能部署此应用程序?我本来希望能在某处或某处找到一个war
文件,但我猜我找错了地方或错过了一个步骤。pom
基本上是一个子模块的容器,每个子模块由一个子目录表示,该目录与pom.xml
具有pom
打包
在某个地方,嵌套在项目结构中,您会发现带有war
打包的工件(模块)。Maven通常将所有内容构建到每个模块的/target
子目录中。因此,在mvn安装后
查看带有war
打包的模块中的target
子目录
当然:
$ find . -iname "*.war"
同样有效;-) 将pom
打包用于聚合其他项目的项目,以及唯一有用的输出是某个插件附加工件的项目。在您的情况下,我猜测您的顶级pom包含聚合其他目录的…
,实际输出是其他目录之一(可能是子目录)的结果。如果为此目的进行合理的编码,它将有一个war
的包。为了简单地回答您的问题,当您执行一个测试时,maven将基于(packaging属性在pom.xml中)创建一个打包的工件,在您运行maven安装后,您可以找到扩展名为.package的文件
- 在项目工作区的目标目录中
- 另外,当您的maven 2本地存储库在您的框中搜索(.m2/respository)时,您的工件将列在(groupId/artifactId/artifactId version.packaging)目录下的.m2存储库中
- 如果您在目录下查找,您将发现打包的扩展文件和pom扩展(pom扩展基本上是用于生成此包的pom.xml)
- 如果您的maven项目是多模块的,则每个模块将包含两个如上所述的文件,但顶层项目只有一个pom
pom打包只是一个规范,说明主要工件不是战争或罐子,而是pom.xml本身
它通常与“模块”一起使用,这些模块通常包含在相关项目的子目录中;然而,它也可以在某些场景中使用,在这些场景中,不需要构建主要二进制文件,所有其他重要的工件都被声明为次要工件
设想一个“文档”项目,主要工件可能是PDF,但它已经构建好了,在配置过程中可能需要将其声明为次要工件,以告诉maven如何构建一个不需要编译的PDF。将工件打包为POM意味着它有一个非常简单的生命周期
package -> install -> deploy
如果要部署pom.xml文件或不适合其他打包类型的项目,这将非常有用
我们在许多项目中使用pom包装,并根据需要绑定额外的阶段和目标
例如,我们的一些应用程序使用:
prepare-package -> test -> package -> install -> deploy
当您安装mvn应用程序时,它应该将其添加到本地.m2存储库中。要在别处发布,您需要设置正确的分发管理信息。如果maven没有自动附加工件,您可能还需要使用maven builder helper插件。POM(项目对象模型)只是用于构建项目的自动化脚本,我们可以用XML编写自动化脚本,
建筑脚本文件在不同的自动化工具中以不同的方式命名
就像我们在ANT中称build.xml,在MAVEN中称pom.xml一样
MAVEN可以包装罐子、战争、耳朵和POM,这对我们所有人来说都是新事物
如果您想查看我建议在以下位置查看经典示例:
这里我的webapp是web项目,这取决于我的app项目中的代码。因此,为了将两个项目捆绑在一起,我们有顶级pom.xml,其中提到了最终要捆绑的项目(根据maven术语的模块)。这样的顶级pom.xml可以使用pom打包
我的webapp可以具有war打包,并且可以依赖于我的应用。我的应用程序可以使用jar包装。现实生活中的用例
在一家重Java的公司,我们有一个python项目,需要进入Nexus工件库。Python并没有真正的二进制文件,所以只想使用.tar或.zip压缩Python文件并推送。repo已经有了maven集成,所以我们使用了pom
指示器,将python项目打包为.zip
,并上传它
这些步骤在本节中进行了概述,“pom”包装只是容器,其中包含其他包/模块,如jar、war和ear
如果您在外部包/容器上执行任何操作,如mvn clean compile install。然后,内部包/模块也会得到干净的编译安装
无需对每个包/模块执行单独的操作。
对于父项目和聚合(多模块)项目,包装类型必须为pom。这些类型定义了绑定到一组生命周期阶段的目标。例如,如果打包是jar,那么打包阶段将执行jar:jar目标。如果包装是pom,那么执行的目标将是site:attach descriptormvn install-这用于在本地存储库(通常是~/.m2/repository direcotry)中安装您的工件(jar、war、ear)其他示例,我可以在类似的行中将其看作是pom项目==>其中的抽象类和模块