You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

添加-p参数后exec-maven-plugin:1.6.0执行失败,求解决建议

解决exec-maven-plugin添加"-p"参数导致的执行失败问题

我太懂这种明明参数有用却被插件坑的感觉了!你遇到的这个java.lang.String cannot be cast to org.codehaus.mojo.exec.Modulepath错误,根源其实是exec-maven-plugin 1.6.0把"-p"当成了自己的内置参数——这个版本里,"-p"是用来指定Java模块路径(modulepath)的专用参数,当你把它作为自己程序的参数传递时,插件会错误地尝试把它解析成Modulepath对象,自然就抛出类型转换异常了。

别担心,这里有几个可行的解决办法,你可以根据自己的情况选:

方案一:升级插件版本(最推荐)

从exec-maven-plugin 3.x版本开始,官方把模块路径的参数改成了--module-path,不再占用"-p"这个短参数。你只需要把pom里的插件版本换成最新稳定版(比如3.1.0),就能正常传递"-p"给你的程序了:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>exec-maven-plugin</artifactId>
    <version>3.1.0</version> <!-- 替换成最新稳定版即可 -->
    <executions>
        <!-- 保留你原来的执行配置 -->
    </executions>
</plugin>

方案二:用拆分参数(无法升级插件时用)

如果因为项目限制不能升级插件,那可以把原来写在<commandLineArgs>里的参数拆成<arguments>逐个定义。这样插件就不会把"-p"识别为内置参数,而是直接传递给你的目标程序:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>exec-maven-plugin</artifactId>
    <version>1.6.0</version>
    <executions>
        <execution>
            <goals>
                <goal>exec</goal>
            </goals>
            <configuration>
                <executable>你的目标程序路径</executable>
                <arguments>
                    <argument>-p</argument> <!-- 单独定义这个参数 -->
                    <argument>你要传递的-p对应值</argument>
                    <!-- 其他参数也像这样逐个添加 -->
                </arguments>
            </configuration>
        </execution>
    </executions>
</plugin>

方案三:如果"-p"是用来指定模块路径的

如果你原本就是想用"-p"配置Java模块路径,那别把它写在命令行参数里,改用插件自带的<modulepath>标签来配置,这样才符合插件的设计逻辑:

<configuration>
    <modulepath>
        <path>你的模块路径内容</path>
    </modulepath>
    <!-- 其他执行配置 -->
</configuration>

内容的提问来源于stack exchange,提问作者AbelSurace

火山引擎 最新活动