Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.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
Xml Maven构建段重复数据消除_Xml_Maven_Build - Fatal编程技术网

Xml Maven构建段重复数据消除

Xml Maven构建段重复数据消除,xml,maven,build,Xml,Maven,Build,我们的应用程序由许多由Maven构建的微服务组成。他们的服务结构如下: 服务 服务核心(服务器端) xml(服务核心pom文件) 服务客户端(客户端) xml(服务客户端pom文件) pom.xml(用于继承依赖项和基本属性) core和client具有不同的堆栈,因此它们的构建部分不匹配。但所有服务中所有核心和客户端的构建部分都是相同的 我们希望将这些构建部分重复数据消除到一个外部文件中(因此,当我们更改某些内容时,不需要在许多地方对其进行修改) 我们已经考虑了一些继承,但这

我们的应用程序由许多由Maven构建的微服务组成。他们的服务结构如下:

  • 服务
    • 服务核心
      (服务器端)
      • xml(服务核心pom文件)
    • 服务客户端
      (客户端)
      • xml(服务客户端pom文件)
  • pom.xml
    (用于继承依赖项和基本属性)
core
client
具有不同的堆栈,因此它们的构建部分不匹配。但所有服务中所有核心和客户端的构建部分都是相同的

我们希望将这些构建部分重复数据消除到一个外部文件中(因此,当我们更改某些内容时,不需要在许多地方对其进行修改)


我们已经考虑了一些继承,但这并不容易,因为
core
client
不共享相同的构建过程,我们还使用Maven模块作为一个整体构建单个服务(父模块+所有子模块)

我们尝试过的另一种可能性是XML实体+导入,但在Maven()中故意禁止实体

还有其他可能性吗

提前谢谢

Maven支持:

配置文件是使用POM本身中可用的元素子集(加上一个额外部分)指定的,并以各种方式触发。它们在构建时修改POM,并用于补充集合中,为一组目标环境提供等效但不同的参数

在您的情况下,可能有一个
服务
项目,其中包含POM中
核心
客户
项目的概要文件声明:

+- services
   +- service_1
      +- core
      +- client
   +- service_2_
      +- core
      +- client
   +- service_3
      +- ...
   +- ...
更新 没有任何个人资料:

+- services  ... just aggregators here and below, build here and below only
   +- service_1_builder
      +- core
      +- client
   +- service_2_builder
      +- core
      +- client
   +- service_3_builder
      +- ...
   +- ...
+- main  ... parent containing declarations common to all descendant projects 
   +- cores  ... parent containing declarations for core builds 
      +- service_1
      +- service_2
      +- service_3
      +- ...
   +- clients  ... parent containing declarations for client builds 
      +- service_1
      +- service_2
      +- service_3
      +- ...
POM
服务
包含:

<modules>
  <module>service_1_builder</module>
  <module>service_2_builder</module>
  <module>service_3_builder</module>
  <module>...</module>
</modules>
服务/service\n\u builder/core的POM包含:

<modules>
  <module>core</module>
  <module>client</module>
</modules>
<modules>
  <module>../../../main/cores/service_n</module>
</modules>
<modules>
  <module>../../../main/clients/service_n</module>
</modules>

服务核心
服务客户端
之间的区别在哪里?这两个jar是jar还是war?您能给出它们的配置示例吗?构建部分有什么特别的区别?一个是普通jar,一个是可执行jar(Spring boot),有不同的插件(对于文档,pmd的不同设置…)PMD插件正在检查源代码,因此无需改变…PMD插件的设置可以在pluginManagement中定义…这将使整个项目(从父级)无法构建,因为这将迫使我同时设置两个配置文件。@malejpavouk你是对的。请参阅我答案的更新。