Groovy 在Maven中为多项目施加构建顺序

Groovy 在Maven中为多项目施加构建顺序,groovy,ant,gradle,ivy,maven,maven-3,Groovy,Ant,Gradle,Ivy,Maven,Maven 3,我在maven有一个多项目,如下所示: paren-project -> plugin-project -> testbed-project <dependency> <groupId>group</groupId> <artifactId>artifact</artifactId> <optional>true</optional> </dependency>

我在maven有一个多项目,如下所示:

paren-project
  -> plugin-project
  -> testbed-project
<dependency>
  <groupId>group</groupId> 
  <artifactId>artifact</artifactId> 
  <optional>true</optional> 
</dependency>
plugin
项目生成一个JAR,该JAR被手动复制到
testbed
的特定子目录中(使用任何类似或的嵌入式脚本)。重要的一点是:我不希望插件JAR位于testbed的类路径中

但是我找不到解决方案来强制在测试床项目之前构建插件项目。如果我将插件项目设置为testbed项目的依赖项,它将添加到类路径中


任何解决方案,或者我必须切换到构建系统,如,或者?

Maven是一个多功能系统。不需要切换

您可以这样添加依赖项:

paren-project
  -> plugin-project
  -> testbed-project
<dependency>
  <groupId>group</groupId> 
  <artifactId>artifact</artifactId> 
  <optional>true</optional> 
</dependency>

团体

正如在

反应器分拣

Because modules within a multi-module build can depend on each other, 
it is important that The reactor sorts all the projects in a way that 
guarantees any project is built before it is required.

The following relationships are honoured when sorting projects:
  • 项目依赖于生成中的另一个模块
  • 插件声明,其中插件是构建中的另一个模块
  • 插件依赖于构建中的另一个模块
  • 在生成中的另一个模块上的生成扩展声明
  • modules元素中声明的顺序(如果没有其他规则适用)
  • 请注意,仅使用“实例化”引用-dependencyManagement pluginManagement元素不会导致反应堆排序顺序的更改


    可选是关于传递关系的,对这个问题没有用。这对我来说是一个稍微不同的问题。我在一个项目中进行了集成测试,输出资源供另一个项目在测试中使用。我将依赖项的范围限定为仅测试,以便在构建中包括war。根据文档,可选的依赖项不包括在类路径中,而是改变了反应器的分类。那么该解决方案是有效的。这可能会产生不希望的副作用,比如将模块包括在阴影工件中,即使它不是真正的依赖项,尽管建议设置测试的注释很聪明。谢谢,我声明没有关系,并通过在模块测试台之前声明插件,成功地在测试台之前构建插件。这值得一些澄清。我们发现规则#5仅适用于给定的模块顺序与规则#1-#4完全兼容的情况。所以你不能用它来表示“A在B之前”,除非你也建立了一个正确的全局模块构建顺序,它不会违反任何依赖关系。