我正在尝试使用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>
您可以尝试设置CLASSPATH环境变量。
尝试添加
<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
最终我决定使用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