2016-09-21 40 views
1

我有一個播放框架項目,其中有一個客戶端庫作爲子模塊。我正在使用flyway進行數據庫遷移。當我使用flyway命令(如sbt flywayMigrate)時,它會針對根項目運行該命令兩次,並針對客戶端庫子模塊運行一次。飛行路徑遷移(多項目):運行SBT命令爲主模塊,但不是子模塊

有沒有辦法僅針對項目運行SBT命令,而不是針對任何子模塊運行SBT命令?
sbt clientLibrary/flywayMigrate將僅針對子模塊運行命令,但sbt root/flywayMigrate針對兩者運行命令。

我見過this answer哪些地址只運行一個子模塊,但不幫助只運行主模塊和子模塊。

編輯: 我確實有根目錄的聚合中的客戶端庫,並刪除它默認運行命令只是爲根。不過,我認爲所有的模塊默認運行是可取的,我想指定模塊排除而不是包含。

+0

也許這會幫助你? http://stackoverflow.com/questions/39551712/sbt-unidoc-how-to-exclude-a-sub-module-from-a-rootproject –

+0

@AlexeySoshin它確實指向我的方向,我會更新我的問題與更多細節。 – kag0

回答

3

http://www.scala-sbt.org/0.13/docs/Multi-Project.html#Aggregation

在項目執行聚集,在這種情況下,根項目,你可以控制每個任務的聚集。例如,爲了避免聚集的更新任務:

lazy val root = (project in file(".")). 
    aggregate(util, core). 
    settings(
    aggregate in update := false 
) 

在你的情況,設置aggregate in flywayMigrate := false代替。要做到這一次,

sbt "; set aggregate in (ThisBuild, flywayMigrate) := false; root/flywayMigrate" 

應該工作。

+0

完美,謝謝 – kag0

相關問題