Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring Boot pom-如何从聚合器pom继承配置文件和属性? 目标_Java_Maven_Spring Boot_Properties_Integration Testing - Fatal编程技术网

Java Spring Boot pom-如何从聚合器pom继承配置文件和属性? 目标

Java Spring Boot pom-如何从聚合器pom继承配置文件和属性? 目标,java,maven,spring-boot,properties,integration-testing,Java,Maven,Spring Boot,Properties,Integration Testing,我正在向Maven构建添加集成测试。我希望实现以下目标: 默认情况下仅运行单元测试 必须能够只运行集成测试 现状 任务变得更加复杂,因为这是一个现有的应用程序,其maven模块的结构(层次结构)令人困惑。我会尽力解释的 所以我有一个聚合器pom(超级pom),看起来像 com.group.id 应用程序名称 SpringBootApp1 SpringBootApp2 聚甲醛 地方的 真的 真的 假的 试验 假的 真的 还有一些不是从超级pom继承的模块pom(它们继承自spring boo

我正在向Maven构建添加集成测试。我希望实现以下目标:

  • 默认情况下仅运行单元测试
  • 必须能够只运行集成测试
现状 任务变得更加复杂,因为这是一个现有的应用程序,其maven模块的结构(层次结构)令人困惑。我会尽力解释的

所以我有一个聚合器pom(超级pom),看起来像

com.group.id
应用程序名称
SpringBootApp1
SpringBootApp2
聚甲醛
地方的
真的
真的
假的
试验
假的
真的
还有一些不是从超级pom继承的模块pom(它们继承自
spring boot starter父级
),看起来像

com.group.id
spring启动应用程序
罐子
Spring启动应用程序
org.springframework.boot
spring启动程序父级
1.5.10.1发布
SpringBootApp1
org.apache.maven.plugins
maven surefire插件
2.21.0
${skip.unit.tests}
org.apache.maven.plugins
maven故障保护插件
2.21.0
集成测试
集成测试
验证
${skip.integration.tests}
如您所见,我在聚合器pom中定义了
skip.integration.tests
skip.unit.tests
属性(不同配置文件的属性值不同),并尝试在模块pom中使用它们

问题 当我执行
mvn clean test-p test
mvn clean verify-p test
来运行测试时,我看到没有应用属性(例如,尽管
跳过.unit.tests
true
,但执行单元测试)

我可以将聚合器pom声明为模块pom的父级,也许这可以解决问题,但是模块pom已经将springbootstarter父级声明为它们的父级

问题
  • 是否可以使用聚合器pom中的属性而不使其成为父级
  • 如何使用聚合器pom中的属性将集成测试与单元测试分开

ps.我向您保证我遵守命名约定:单元测试的命名类似于
*Test.java
,集成测试的命名类似于
*IT.java
。因此maven failsafe plugin和maven surefire plugin将它们区分开来。

如果您可以将聚合器作为模块的父级,然后将聚合器配置为具有
spring boot starter父级
作为父级,则此问题将得到解决。(假设您的聚合器当前没有任何父级)

或者您可以通过命令行传递skip test属性,如
-Dskip.unit.tests=true
(在这里您可以调用mvn clean verify)


作为旁注,当您执行
mvn test
命令时,您不必指定要跳过的集成测试,因为它是在生命周期的稍后阶段。(它不会以任何方式执行)

我不能将聚合器作为父级。谢谢你指路!