我不熟悉Maven,并试图弄清楚它如何在我们现有的项目上运作。
项目和文件夹结构基本上是
A
A \ 1
A \ 2
A \ 3
每个文件夹里面都有一个pom文件。每个pom包含一个或多个定义的配置文件。 我不明白的是这个命令
A> mvn install
如何执行所有pom以及正在执行哪些配置文件?
我没有看到任何标有 activebydefault
的标签当我需要花时间在第1步学习并建立一些项目时感到沮丧,但我被迫在第50步没有任何人知道关于Maven的第一件事。当然,解决方案总是在昨天到期。
答案 0 :(得分:3)
Profiles可以在您的POM中,在父POM中,在您的设置中指定。因此,仅查看您的POM文件可能还不够。
运行mvn help:active-profiles
会为您提供所有活动配置文件的列表以及来自哪个来源(pom或设置)。
运行mvn help:all-profiles
将为您提供所有可用配置文件,活动配置文件以及源(pom或设置)的列表。
运行mvn help:effective-pom -Doutput=full-pom.xml
将为您提供完整的POM文件(在full-pom.xml
生成的文件中),作为当前pom,父pom和设置的合并。这将是真实的完整来源。
您描述的结构适用于多模块maven项目,这意味着A
是aggregator项目(包装pom
,其唯一的交付是pom文件,仅限于函数是提供它将构建的modules
但是,请注意,在Maven聚合和inheritance是两个不同的概念,它们经常一起使用:聚合意味着我将构建我构建的所有已定义模块的一部分;继承意味着我将从父pom继承配置。因此,A\1
可以继承项目A
中的个人资料,如果在A\1
的pom中,您会发现A
定义为parent
(通常情况属实,有一个聚合器,它也是所有已定义模块的父级)。
为什么要有聚合器?拥有相关子项目的集中构建和位置,同时仍然保持子模块间关注点的良好分离。此外,作为Maven的最佳实践,项目应该只生成一个人工制品,因此可能是一个Web应用程序在一个模块中具有逻辑,在另一个模块中生成战争,在另一个模块中生成耳朵的情况。
为什么要继承?要有一个集中的位置来设置共享/公共配置,例如配置文件,还有依赖项和dependencies management。
最后,这是一个常见的误解,因此也意识到:
-P
选项),您将激活所请求的配置文件,但也会自动停用默认激活的配置文件settings.xml
中定义的配置文件(默认情况下,如果已激活,则应用于相关计算机上的所有Maven版本)。 更新有关此答案的进一步说明受到一些评论的影响:Maven构建被指定为build
部分(插件执行流程)的一部分,而不是必然需要配置文件。配置文件通常被定义为为构建添加进一步的行为,但是不管是否有任何可激活的配置文件,最好成功构建构建,也就是说,我不必知道定义的配置文件以运行构建,它是maven,协调和约定优于配置的核心概念:给定一个Maven项目,我总是可以假设只需mvn clean install
即可完成所需的魔法。
有关从Maven开始的常见问题列表,官方Getting Started Guide已经提供了很好的帮助
另请查看官方简介简介的Profiles Pitfalls以获取有关配置文件的更多指导。
答案 1 :(得分:2)
除非您将个人资料标记为activeByDefault,否则不会激活个人资料。