2015-06-13 83 views
1

我看到的一個參數可以在pom.xml被配置或在CLI通過諸如-Dxxxxx=...傳遞給maven插件的參數的優先級是什麼?

我的問題是,如果相同的參數都在文件pom.xml配置並在CLI,這將是由行家可以使用通過插入?有沒有關於這個優先權的文件?

大部分我相信CLI會覆蓋,但這個真實的案例顯示相反。

<plugin> 
    <groupId>de.saumya.mojo</groupId> 
    <artifactId>rspec-maven-plugin</artifactId> 
    <version>1.0.0-beta</version> 
    <configuration> 
     <launchDirectory>${project.build.directory}/test-classes</launchDirectory> 
     <summaryReport>${project.build.directory}/test-Ruby.xml</summaryReport> 
     <specSourceDirectory>./new_test</specSourceDirectory> 
    </configuration> 
    <executions> 
     <execution> 
      <goals> 
       <goal>test</goal> 
      </goals> 
     </execution> 
    </executions> 
</plugin> 

當我跑

mvn test -DspecSourceDirectory=./spec 

該插件還處於pom.xml這是./new_test

我使用maven 3.0.5,Java 7中,JRuby的1.7.5

specSourceDirectory

得到它解決:它應該是一個屬性,而不是的硬編碼

<specSourceDirectory>${specSourceDirectory}</specSourceDirectory> 
+1

命令行參數覆蓋IIRC。似乎很容易測試這個假設。 –

+0

如果pom參數超過了CLI參數,那麼它明顯減少了CLI參數的用處。 –

+0

@DaveNewton:這是一個慣例還是由Maven代碼執行? –

回答

1

有一件事是插件的配置參數,另一件事是Maven的調用屬性(用戶屬性)。例如,看看Surefire's skip configuration parameter。有一個skip參數可由maven.test.skip屬性設置。通常這兩個名字是獨立的,因此可以是不同的也可以是相同的。

在你的情況下,<specSourceDirectory>${specSourceDirectory}</specSourceDirectory>將是這樣的後一種情況,並會按預期工作。

相關問題