2013-08-17 100 views
0

如何覆盖子pom的Maven 3.0父配置文件属性?如何覆盖子pom的Maven 3.0父配置文件属性?

我想要从父pom覆盖配置文件属性。我已经使用了help:effective-pom -Pjmeter,并且可以看到孩子的属性没有被拾起,并且尝试了许多不同的排列,但都没有成功。我期望父母的财产被儿童财产所覆盖。

父POM简介:

<profile> 
    <id>jmeter</id> 
    <properties combine.self="override"> 
    <maven.jmeter.phase>verify</maven.jmeter.phase> 
    <maven.jmeter.goal>jmeter</maven.jmeter.goal> 
    <!-- We use the ${basedir} to avoid NullPointer errors when src/test/jmeter doesn't exist --> 
    <!-- when running jmeter test the default to set in the child pom is ${basedir}/src/test/jmeter --> 
    <maven.jmeter.testFilesDirectory>${basedir}</maven.jmeter.testFilesDirectory> 
    <maven.jmeter.jMeterTestFile>**/*.jmx</maven.jmeter.jMeterTestFile> 
    <maven.jmeter.excludeJmeterTestFile>NOT_NULL</maven.jmeter.excludeJmeterTestFile> 
    <maven.jmeter.testResultsTimestamp>false</maven.jmeter.testResultsTimestamp> 
    <maven.jmeter.server>localhost</maven.jmeter.server> 
    <maven.jmeter.port>8080</maven.jmeter.port> 
    </properties> 
    <build> 
    <pluginManagement> 
     <plugins> 
     <plugin> 
      <groupId>com.lazerycode.jmeter</groupId> 
      <artifactId>jmeter-maven-plugin</artifactId> 
      <version>${jmeter.version}</version> 
      <executions> 
      <execution> 
       <id>jmeter-tests</id> 
       <phase>${maven.jmeter.phase}</phase> 
       <goals> 
       <goal>${maven.jmeter.goal}</goal> 
       </goals> 
       <configuration> 
       <testFilesDirectory>${maven.jmeter.testFilesDirectory}</testFilesDirectory> 
       <testFilesIncluded> 
        <jMeterTestFile>${maven.jmeter.jMeterTestFile}</jMeterTestFile> 
       </testFilesIncluded> 
       <testFilesExcluded> 
        <excludeJmeterTestFile>${maven.jmeter.excludeJmeterTestFile}</excludeJmeterTestFile> 
       </testFilesExcluded> 
       <testResultsTimestamp>${maven.jmeter.testResultsTimestamp}</testResultsTimestamp> 
       <propertiesUser> 
        <!-- server and port must be defined (and used) in the JMeter jmx file as User Defined Variables 
         ${__P(server,localhost)} 
         ${__P(port,80)} 
         See http://jmeter.apache.org/usermanual/component_reference.html#User_Defined_Variables 
          http://jmeter.apache.org/usermanual/test_plan.html#using_variables 
          http://jmeter.apache.org/usermanual/functions.html#__P 
          http://jmeter.apache.org/usermanual/best-practices.html#parameterising_tests 
        --> 
        <server>${maven.jmeter.server}</server> 
        <port>${maven.jmeter.port}</port> 
       </propertiesUser> 
       </configuration> 
      </execution> 
      </executions> 
     </plugin> 
     </plugins> 
    </pluginManagement> 
    </build> 
</profile> 

,然后在子POM:

<profile> 
    <id>jmeter</id> 
    <activation><activeByDefault>false</activeByDefault></activation> 
    <properties> 
    <maven.jmeter.testFilesDirectory>${project.basedir}/src/test/jmeter</maven.jmeter.testFilesDirectory> 
    <!-- csv based JMeter tests result in one graph in Jenkins, we want a graph per test --> 
    <maven.jmeter.excludeJmeterTestFile>**/KRAD.jmx</maven.jmeter.excludeJmeterTestFile> 
    </properties> 
</profile> 

回答

3

我不知道属性覆盖的方式。无论哪种方式,该插件将不会像您一样运行,因为您只定义了<pluginManagement>,并且在<build>下没有直接输入<plugins>子项。如果你不想让你的插件父运行,只是定义在儿童<plugins>标签地方,你想这个运行这样:

<profile> 
    <id>jmeter</id> 
    <activation><activeByDefault>false</activeByDefault></activation> 
    <build> 
    <plugins> 
     <plugin> 
     <groupId>com.lazerycode.jmeter</groupId> 
     <artifactId>jmeter-maven-plugin</artifactId> 
     <configuration> 
      <testFilesDirectory>${maven.jmeter.jMeterTestFile}</testFilesDirectory> 
      <!-- csv based JMeter tests result in one graph in Jenkins, we want a graph per test --> 
      <testFilesExcluded> 
      <excludeJmeterTestFile>${maven.jmeter.excludeJmeterTestFile}</excludeJmeterTestFile> 
      </testFilesExcluded> 
     </configuration> 
     </plugin> 
    </plugins> 
    </build> 
</profile> 

希望这有助于。