2011-10-25 167 views
1

我有一個多模塊項目與多個子項目,其中一個使用Maven的Android插件:Maven的目標,在多模塊項目

module-1 $ mvn clean install android:redeploy 

    +-------------+ 
        | Aggregator | 
        | Module | 
        +-------------+ 

+-------------+ +-------------+ +-------------+ 
| Module 1 | | Module 2 | | Module 3 | 
| (android) | |    | |    | 
+-------------+ +-------------+ +-------------+ 

我經常從模塊1運行以下命令

這可以正常工作,因爲模塊1在其pom中聲明瞭android插件。

對我來說,能夠運行相同的命令會很方便,例如。 mvn clean install android:redeploy,來自Aggregator模塊,並且讓maven知道它應該在所有子模塊中運行「clean」和「install」,並且僅在支持它的模塊(即模塊1)中「android:redeploy」。

相反,當我嘗試從聚合器模塊運行命令時,出現一個錯誤,指出「錯誤解析插件版本」,這很有意義,因爲它尚未在聚合器中聲明,事實上,沒有意義在聚合器中聲明。

有沒有一種巧妙的方法可以將模塊配置爲在這種情況下「做正確的事情」,這樣我就不必在兩個單獨的目錄中運行maven了?

+0

爲什麼你現在不能運行?會發生什麼? – bmargulies

+0

「解決插件的版本時出錯」 – emmby

回答

1

爲插件添加一個pluginManagement子句給父項目。

<plugin/>元素放入<pluginManagement/>時,表示它在需要時爲該插件提供配置,但不指示maven運行它。

你把<skip>${skip-android}</skip>在配置(假定該插件支持的標準模式。

您在聚合設定的跳躍機器人屬性爲true。

然後再配置單獨的項目,在那裏有意義的將skip-android屬性設置爲false

+0

你能解釋一下嗎? – emmby