/pom.xml (root/'grandparent' POM)
/parent-foo/pom.xml (a parent with 'foo' dependencies & configurations)
/child-1/pom.xml
...
/child-n/pom.xml
root -> parent-foo -> child-n
使用parent-foo
可以用于基于foo
的遗留用例,但也可以测试我们正在迁移的未来用例:bar
。
/pom.xml (root POM)
/parent-bar/pom.xml (a parent with 'bar' dependencies & configurations)
/child-1/pom.xml
...
/child-n/pom.xml
root -> parent-bar -> child-n
我是否可以在每次修改子-n
POM时实现以下反应器构建?或者,类似的东西?或者,Maven仅仅是这个用例的错误工具吗?
[INFO] ------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] root ............................................... SUCCESS
[INFO] parent-foo ......................................... SUCCESS
[INFO] child-1 ............................................ SUCCESS (foo parent)
[INFO] ...
[INFO] child-n ............................................ SUCCESS (foo parent)
[INFO] parent-bar ......................................... SUCCESS
[INFO] child-1 ............................................ SUCCESS (bar parent)
[INFO] ...
[INFO] child-n ............................................ SUCCESS (bar parent)
[INFO] ------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------
理想情况下,我希望在一个反应器构建中实现所有功能,每个子-n
编译并与每个父-*
继承的依赖项一起使用。我知道这会使我的Maven repo处于不希望的状态,但至少我可以将反应器构建插入到我的CI,并确保我的构建在父级-*
依赖平台上运行。
# 1. modify all child-n POMs
# Old:
root -> parent-foo -> child-n
# New:
root -> parent-bar -> child-n
2. Run reactor build effective with 'root -> parent-bar -> child-n' dependency tree
root
POM本质上是POM的“祖父母”,per@ohadr的评论。Maven不支持多重继承,它通过使用依赖项管理小节中的“导入”范围间接支持这个概念
<dependencyManagement>
<dependencies>
<dependency>
<groupId>other.pom.group.id</groupId>
<artifactId>other-pom-artifact-id</artifactId>
<version>SNAPSHOT</version>
<scope>import</scope>
<type>pom</type>
</dependency>
</dependencies>
</dependencyManagement>
在管理部分中,唯一的不便是您必须显式地声明依赖项,但是······你所取得的成就是:
拥有不同的POM--每个POM管理一组相关的依赖项。项目只需要导入这些POM,然后使用依赖项,而不必担心依赖项版本。本质上,这使父POM保持简单和精干。
问题内容: 我们有Java和Flex项目。当前,我们有1个基本pom,其中包含我们要用于两个项目的配置。问题是:Flex项目会继承配置,例如for 和plugins,这是不希望的。 我要清理它并有一个真正的基本pom,然后是a 和a 。但是,这在具有Flex部分和Java部分的多模块中如何工作? 我们有自己的应用程序插件,其中使用以下结构: 我的插件 我的插件客户端(flex) 我的插件服务器(j
问题内容: 我有一个相当简单的行家化Java项目,但是在解决这个问题时遇到了麻烦。 我的父模块定义了许多Java类(和依赖项),我希望它们对几个子模块很有用。子模块之一专用于部署Web应用程序,因此它需要一些额外的类(Servlet)以及父模块中的所有内容。 文件结构如下所示 我的父母pom看起来像这样: 孩子看起来像这样: 这是我需要让孩子知道父级中定义的类和依赖项的全部吗?它似乎不是:ecli
我们有一个模块化项目,包含大约10个工件: 此外,一些工件之间存在依赖关系: 我们当前的设置如下所示: parent是包含父POM的工件 这个父POM定义了所有必要的依赖项(比如Spring、JPA等等)进来 我们所有的工件也都在中定义 我们的工件将父工件称为明显的父工件 只有父POM定义版本。其他所有的POM都没有 我们使用三个数字的版本控制方案: 例如: 问题是: 一旦我们更改了工件的版本(例
我在为父-子pom文件设置java编译器版本时遇到了问题。我在版本1.7的子pom中添加了maven-compiler-plugin,并注意到java版本的子模块从默认的1.5变成了1.7,而父项目仍然是1.5。然后,我将编译器插件从子pom移到父pom。预计对于父maven模块和子maven模块,编译器版本将更改为1.7。但奇怪的是,没有观察到任何变化,子模块仍然是1.7,父项目是1.5。我从e
我有3个maven项目。项目1,项目2 为此,我在项目2 pom.xml文件中添加了这个 我的pom。Project3的xml是- 在项目3中,我添加了testng。xml文件来运行测试。现在如果我运行这个测试。xml文件,那么我所有的测试用例都成功运行了。如果我尝试使用maven测试运行测试用例,那么它会失败。 我已经在下面的pom文件中包含了testng.xml文件,以便使用maven运行te
我有许多子POM(50个项目),要求我更新每个版本上的所有POM,例如,当从移动到时。 如何在一个地方定义版本,并在所有POM中重用它? 编辑-关于请求的一些动机:我希望在切换版本时尽可能少的占用。作为要更改的小文件。因为几乎没有人promise推动。等。 编辑-在加载父属性之前不能使用父属性。