我正在尝试使用 maven-exec-plugin 和 exec 目标运行一个 maven 项目(java 目标不适用于我的目的)。但是,我需要做两件事,但我不知道如何同时做这两件事。
首先是它需要(显然)模块路径。当我在 pom 中设置参数时,这可行,并且我的程序确实运行:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<!-- <version>3.0.0</version> is specified in parent module's <pluginManagement> -->
<executions>
<execution>
<id>cli</id>
<configuration>
<executable>java</executable>
<arguments>
<argument>-p</argument>
<modulepath/>
<argument>-m</argument>
<argument>dev.liambloom.checker.ui/dev.liambloom.checker.ui.cli.Main</argument>
</arguments>
</configuration>
</execution>
</executions>
</plugin>
但是,当我这样做时,无法将其他命令行参数传递给我的程序(除非我在每次执行之前将它们设置在 pom 中,这是一个选项,但不是一个不受欢迎的选项)。
另一个允许我轻松添加参数的选项是手动调用 exec 或使用批处理文件,如下所示:
@echo off
mvn exec:exec@cli -pl ui -Dexec.longModulepath="false" -Dexec.args="-p %modulepath -m dev.liambloom.checker.ui/dev.liambloom.checker.ui.cli.Main %*"
然而,这个%modulepath
论点(记录在这里),似乎并没有奏效。以下是详细命令输出中的几行:
[DEBUG] Executing command line: [C:\Program Files\Java\openjdk-17\bin\java.exe, -p, %modulepath, -m, dev.liambloom.checker.ui/dev.liambloom.checker.ui.cli.Main]
Error occurred during initialization of boot layer
java.lang.module.FindException: Module dev.liambloom.checker.ui not found
有谁知道如何 a.) 传递除 pom 中指定的参数之外的任意参数,或 b.) 使%modulepath
参数起作用?