maven - 两个不同的根poms

时间:2013-05-27 05:17:44

标签: java maven build packaging directory

我是Maven的新手。我获得了一个新项目,其结构如下。

Data_Res
  |
  ---res-search
  |     |
  |     -----res-hast
  |     |       |
  |     |       ------src/main....
  |     |       |
  |     |       ------pom.xml
  |     -----res-haster
  |     |       |
  |     |       ------src/main....
  |     |       |
  |     |       ------pom.xml
  |     |
  |     ----pom.xml
  | 
  |
  ---pom.xml
  ---sonar_pom.xml

我没有看到root pom.xml中的modules部分。但我确实在sonar_pom.xml中看到了modules部分。它不包括所有子节点。文件夹/项目可以有两个pom吗?或者我们可以单独执行它们吗?

  1. 我如何解释这一个?子模块或个别项目?是否有任何指标可以找到?
  2. 我被告知要在root pom上运行mvn clean install。我做到了我被要求验证是否提供了其中一个子文件夹的所有依赖项。怎么检查这些?我可以在我的主目录中的.m2文件夹下看到一些文件。
  3. 如何构建/打包?我将要处理其中一个子文件夹。如果它是一个单独的项目或子模块,那就不是了。在这种情况下,我可以直接转到该文件夹​​并从该文件夹运行mvn package / build(存在pom.xml)吗?

2 个答案:

答案 0 :(得分:9)

当您执行目标(e.g mvn install)时,maven将检查执行文件夹上的pom.xml,如果pom.xml存在,它将执行该文件夹(即项目)的目标,如果有任何提到的模块将在模块上执行相同的目标,此操作是递归的。

  

文件夹/项目可以有两个pom吗?

是的,您可以为项目设置多个poms,但默认为pom.xml,如果要使用备用pom文件,可以使用-f在您的案例mvn -f sonar_pom.xml clean install中提及备用pom文件,probaly pom文件用于声纳。

  

我如何解释这一个?子模块或个别项目?   是否有任何指标可以找到?

如果您的本地maven仓库中存在父项和所有项目,则每个项目都可以独立构建pom.xml。

  

我被告知要在root pom上运行mvn clean install。我做到了我曾是   要求验证其中一个子文件夹的所有依赖项是否都是   提供。怎么检查这些?我可以在.m2文件夹下看到一些文件   我的主目录。

要验证依赖项检查本地maven repo,默认值为~/.m2/repository,但可以在settings.xml中更改设置。检查~/.m2/settings.xml如果文件不存在,您可以在<maven_home>/conf/settings.xml中找到全局设置,将其复制到~/.m2/然后可以覆盖该文件,请检查以下标记<localRepository>/path/to/local/repo</localRepository>

  

如何构建/打包?我打算在其中一个上工作   子文件夹。如果它是一个单独的项目或子模块,那就不是了。在   那种情况下,我可以直接转到那个文件夹并运行mvn package /   从该文件夹构建(pom.xml存在)?

如前所述,如果您拥有父项和所有依赖项,则可以在模块上执行mvn package。您可以通过两种方式结合使用

  1. 使用mvn install
  2. 在系统中安装它们
  3. 使用remote repositories

答案 1 :(得分:0)

只是添加到已经正确的答案:在eclipse中我必须在“Maven Build”运行配置下创建一个新的“运行配置”。我将基目录设置为标准

  

$ {project_loc:连接}

和“目标”字段

  

-f pom_deploy.xml install -T 1C

然后我可以右键单击自定义pom_deploy.xml - &gt;以...运行 - &gt;运行配置 - &gt;自定义Maven部署

'-T 1C'是可选的,它告诉Maven同时使用多个处理器进行构建/编译过程。