Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.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
如何避免父级中定义的Maven插件被子级覆盖?_Maven_Pom.xml_Maven Plugin_Overriding - Fatal编程技术网

如何避免父级中定义的Maven插件被子级覆盖?

如何避免父级中定义的Maven插件被子级覆盖?,maven,pom.xml,maven-plugin,overriding,Maven,Pom.xml,Maven Plugin,Overriding,我正在处理的Maven项目继承自父POM,其中一些项目范围内的变量是通过在验证阶段执行gmaven插件来计算的: 父POM: <plugin> <groupId>org.codehaus.gmaven</groupId> <artifactId>gmaven-plugin</artifactId> <version>1.5-jenkins-1</version> <executions>

我正在处理的Maven项目继承自父POM,其中一些项目范围内的变量是通过在验证阶段执行gmaven插件来计算的:

父POM:

<plugin>
  <groupId>org.codehaus.gmaven</groupId>
  <artifactId>gmaven-plugin</artifactId>
  <version>1.5-jenkins-1</version>
  <executions>
    <execution>
      <phase>validate</phase>
      <goals><goal>execute</goal></goals>
      <configuration>
        <providerSelection>2.0</providerSelection>
        <source>
          project.properties.put("test.property1", "123");
        </source>
      </configuration>
    </execution>
  </executions>
</plugin>
<plugin>
  <groupId>org.codehaus.gmaven</groupId>
  <artifactId>gmaven-plugin</artifactId>
  <version>1.5-jenkins-1</version>
  <executions>
    <execution>
      <phase>validate</phase>
      <goals><goal>execute</goal></goals>
      <configuration>
        <providerSelection>2.0</providerSelection>
        <source>
          project.properties.put("test.property2", "abc");
        </source>
      </configuration>
    </execution>
  </executions>
</plugin>

org.codehaus.gmaven
gmaven插件
1.5-jenkins-1
验证
执行
2
项目.属性.投入(“测试.属性1”,“123”);
现在我想在子POM中使用gmaven插件来计算和设置一些额外的参数:

子POM:

<plugin>
  <groupId>org.codehaus.gmaven</groupId>
  <artifactId>gmaven-plugin</artifactId>
  <version>1.5-jenkins-1</version>
  <executions>
    <execution>
      <phase>validate</phase>
      <goals><goal>execute</goal></goals>
      <configuration>
        <providerSelection>2.0</providerSelection>
        <source>
          project.properties.put("test.property1", "123");
        </source>
      </configuration>
    </execution>
  </executions>
</plugin>
<plugin>
  <groupId>org.codehaus.gmaven</groupId>
  <artifactId>gmaven-plugin</artifactId>
  <version>1.5-jenkins-1</version>
  <executions>
    <execution>
      <phase>validate</phase>
      <goals><goal>execute</goal></goals>
      <configuration>
        <providerSelection>2.0</providerSelection>
        <source>
          project.properties.put("test.property2", "abc");
        </source>
      </configuration>
    </execution>
  </executions>
</plugin>

org.codehaus.gmaven
gmaven插件
1.5-jenkins-1
验证
执行
2
项目.属性.投入(“测试.属性2”,“abc”);
但是,这会导致父级中定义的插件消失/被覆盖。有效的POM只包含在子项中定义的插件,而
测试.property1
最终为
null


如何在父插件和子插件中执行Maven插件,而不使它们相互干扰?

阅读博客文章如何合并配置。这可能会解决您的问题。

据我所知,您只需在孩子的pom中配置另一个执行部分,所有对家长插件的引用就会消失。

添加:
add : 

    <inherited>true</inherited>

like : 
    <groupId>org.codehaus.gmaven</groupId>
      <artifactId>gmaven-plugin</artifactId>
      <version>1.5-jenkins-1</version>
     <inherited>true</inherited>
真的 比如: org.codehaus.gmaven

仅在子pom中配置另一个执行部分不起作用。事实上,这就是问题所在。子级覆盖父级,只有
test.property2
可用,而
test.property1
null