我使用Maven嵌入3.3.3在我的計劃,以編程方式運行Maven目標,每次我碰到下面的錯誤,我運行MavenCli.doMain
方法:無法通過MavenCli(Maven的嵌入)來運行Maven任務
-Dmaven.multiModuleProjectDirectory
系統屬性未設置。檢查$M2_HOME
環境變量和mvn
腳本匹配。
我使用Maven嵌入3.3.3在我的計劃,以編程方式運行Maven目標,每次我碰到下面的錯誤,我運行MavenCli.doMain
方法:無法通過MavenCli(Maven的嵌入)來運行Maven任務
-Dmaven.multiModuleProjectDirectory
系統屬性未設置。檢查$M2_HOME
環境變量和mvn
腳本匹配。
由於Maven 3.3.1,有一個新的系統屬性maven.multiModuleProjectDirectory
。它通過mvn
(or mvn.bat
)腳本默認設置爲項目的根目錄(項目基礎目錄)(因此,您之前從未遇到過這樣的錯誤)。
因此,當通過maven-embedder
運行Maven時,還需要設置此係統屬性(請參閱source code進行檢查)。它需要設置爲項目根目錄。
要設置此係統屬性,您可以調整您的來電doMain
並添加
"-Dmaven.multiModuleProjectDirectory=" + projectRoot
給定的參數。一個例子是
int result = cli.doMain(new String[] { "-Dmaven.multiModuleProjectDirectory=" + projectRoot, "install" }, "/path/to/project", System.out, System.err);
或者,您可以撥打:
System.setProperty("maven.multiModuleProjectDirectory", projectRoot);
調用MavenCli.doMain
方法,其中前點projectRoot
你正在構建的項目的根。
對於Maven Embedder 3.5.2,'doMain'選項不起作用,因爲在對參數進行屬性解析之前進行了檢查。 – Mirvnillith
那麼,你是否將'-Dmaven.multiModuleProjectDirectory'設置爲項目基地? – Tunaki
我能夠在我的系統上運行Maven命令。我從來沒有得到這個錯誤 –