2013-08-17 102 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> 

希望這有助於。