Seit Maven 3.3.1 gibt es eine neue Systemeigenschaft namens maven.multiModuleProjectDirectory
. Es ist standardmäßig auf den Stamm des Projekts (Projektbasisverzeichnis) durch das mvn
(or mvn.bat
) Skript eingestellt (deshalb haben Sie noch nie zuvor einen solchen Fehler erlebt).
Daher, wenn Maven über maven-embedder
ausgeführt wird, müssen Sie auch diese Systemeigenschaft festlegen (siehe source code, wo die Überprüfung vorgenommen wird). Es muss auf den Projektstamm festgelegt werden.
diese Systemeigenschaft zu setzen, können Sie Ihren Anruf doMain
einstellen und
"-Dmaven.multiModuleProjectDirectory=" + projectRoot
die gegebenen Argumente hinzufügen. Ein Beispiel wäre
int result = cli.doMain(new String[] { "-Dmaven.multiModuleProjectDirectory=" + projectRoot, "install" }, "/path/to/project", System.out, System.err);
Alternativ sein, Sie können auch anrufen:
System.setProperty("maven.multiModuleProjectDirectory", projectRoot);
vor MavenCli.doMain
Methode, wo projectRoot
Punkte Wurzel des Projekts aufrufen Sie bauen.
Nun, haben Sie "-Dmaven.multiModuleProjectDirectory" auf die Projektbasis gesetzt? – Tunaki
Ich kann Maven-Befehle auf meinem System ausführen. Ich habe diesen Fehler nie bekommen –