当前位置: 首页 > 知识库问答 >
问题:

添加命令行参数到maven exec插件

程仲卿
2023-03-14

我正在尝试使用maven exec插件运行一个java程序,使用exec:exec目标
我需要向类路径添加一个额外的jar(sun工具jar)
由于includePluginDependencies仅适用于exec:java目标,我想在arguments部分手动添加它,但找不到将其连接到基本类路径的方法。问题是,由于jar被定义为系统作用域,maven不会将其添加到运行时类路径中,因此我需要手动添加它
如果有人知道如何从命令行执行此操作,那就更好了。提前感谢,
阿夫纳

>

        <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>exec-maven-plugin</artifactId>
        <version>1.2.1</version>
        <dependencies>
            <dependency>
                <groupId>com.sun</groupId>
                <artifactId>tools</artifactId>
                <scope>system</scope>
                <systemPath>${JDK_HOME}/lib/tools.jar</systemPath>
            </dependency>
            <dependency>
                <groupId>${project.groupId}</groupId>
                <artifactId>myArtifact</artifactId>
                <version>1.0</version>
            </dependency>
        </dependencies>
        <configuration>
            <executable>java</executable>
            <arguments>
                <argument>-classpath</argument>
                <classpath/>                        
                <argument>com.mycompany.MyMainClass</argument>
            </arguments>
        </configuration>
        <executions>
            <execution>
                <goals>
                    <goal>exec</goal>
                </goals>
            </execution>
        </executions>
    </plugin>

共有3个答案

丌官远
2023-03-14

您可以尝试设置CLASSPATH环境变量

鲜于允晨
2023-03-14

尝试添加

<argument>-Xbootclasspath/a:${env.JAVA_HOME}/lib/tools.jar</argument>

在命令行中,添加

-Dexec.args="-Xbootclasspath/a:$JAVA_HOME/lib/tools.jar"

另一个选项是声明工具。jar作为系统依赖项,然后将exec插件范围设置为“System”请参阅:exec maven插件-classpathScope

甘骞尧
2023-03-14

最终我决定使用maven antrun插件,所以这里有一个可能的替代解决方案。

<configuration>
<target>
    <property name="runtime_classpath" refid="maven.runtime.classpath"/>

    <java classname="com.mycompany.MyClass"
            fork="true"
            spawn="false"
            failonerror="true"
            maxmemory="512m" >

        <classpath>
            <pathelement path="${runtime_classpath}" />
            <pathelement path="${JDK_HOME}/lib/tools.jar" />
        </classpath>
        <arg value="${ant.param1}" />
        <arg value="${ant.param2}" />
        <arg value="${ant.param3}" />
        <arg value="${ant.param4}" />
        <arg value="${ant.param5}" />
    </java>
</target>
</configuration>
 类似资料:
  • 在我的Laravel 5.8应用程序中,我使用database/factories/HostelReviewFactory.php中的定义创建工厂: 并从seeder数据库/seeds/hostelReviewTableSeeder.php运行它: 我得到一个错误: 看起来$parentParams中的所有值都添加到了目标表的字段列表中,我不需要它,因为$parentParams只是我想设置为fa

  • 为了方便起见,我们支持在运行 Blade 应用的时候修改一些配置,比如我在运行时指定端口: java -jar blade-app.jar --server.port=9088 当然还支持一些其他的命令行参数,看看下面的表格: 命令行参数 描述 示例 server.address 服务地址,默认是本机 0.0.0.0 回环地址 --server.address=192.168.1.100 serv

  • 1.2. 命令行参数 大多数的程序都是处理输入,产生输出;这也正是“计算”的定义。但是, 程序如何获取要处理的输入数据呢?一些程序生成自己的数据,但通常情况下,输入来自于程序外部:文件、网络连接、其它程序的输出、敲键盘的用户、命令行参数或其它类似输入源。下面几个例子会讨论其中几个输入源,首先是命令行参数。 os包以跨平台的方式,提供了一些与操作系统交互的函数和变量。程序的命令行参数可从os包的Ar

  • '-m' 选项 显示所有编译的模块,自1.4.0以来,Tengine支持动态模块,static表示静态编译,shared表示动态编译(后面接的是动态模块的版本)。下面是例子: $ nginx -m Tengine version: Tengine/1.4.1 (nginx/1.2.3) loaded modules: ngx_core_module (static) ng

  • V2Ray V2Ray 的程序文件的命令行参数如下: v2ray [-version] [-test] [-config=config.json] [-format=json] -version 只输出当前版本然后退出,不运行 V2Ray 主程序。 -test 测试配置文件有效性,如果有问题则输出错误信息,不运行 V2Ray 主程序。 -config 配置文件路径,可选的形式如下: 本地路径,可

  • 所有标志都是可选的,但是有些必须跟指定标志组合使用才生效。 标志 默认 描述 示例 --shell null 进入 REPL 模式 --allow-cors false 打开 CORS 兼容模式,这将允许从托管在任何域中的网站内连接到 Appium 服务器。启用此功能时要小心,因为如果您访问的网站使用跨域请求,在 Appium 服务器上启动或运行内省会话,则可能存在安全风险。 --ipa null