而這個預設值寫在哪呢?就是 Super POM。
所有的 Maven 專案的 pom.xml 都是擴充自 Super POM,也就是說,pom.xml 裡沒說的事就是看 Super POM 裡的設定。
上一段話有點不太算例外的例外,就是有宣告 parent 的專案(要說是子專案,或是 SubModule)並不會直接繼承 Super POM,而是繼承 Parent Project 的 pom.xml,但是 Parent Project 還是繼承 Super POM。
Maven 2 的 Super POM。
apache-maven-2.1.0\lib\maven-2.1.0-uber.jar\org\apache\maven\project\pom-4.0.0.xmlMaven 3 的 Super POM。
apache-maven-3.0.4\lib\maven-model-builder-3.0.4.jar\org\apache\maven\model\pom-4.0.0.xmlMaven 3 的 Super POM 除了一些預告未來會移除的設定外,只剩兩組設定:
- Repository 位置,包括 Dependency 與 Plugin。
- 專案的目錄預設位置,像是 sourceDirectory 之類的。
當然不建議更改 Super POM 的設定,主要是不想因為升級 Maven 而遺失這些設定,可以自訂 Maven 的地方有:
- Maven 安裝目錄 / conf / settings.xml - 這裡也會因為升級而遺失。
- ~ / .m2 / settings.xml
- 專案裡的 pom.xml
那能不能知道我的 pom.xml 加上 Super POM 的結果。
mvn help:effective-pom疑問,Maven 3 的 Super POM 幾乎沒有 plugin 的設定,但是產出的 effective pom 卻有一堆 plugin,怎麼來的?
---
---
---
沒有留言:
張貼留言