我可以通过运行:
从命令行运行.jar时添加命令行参数java --my-command-line-argument argumentValue -jar myJarFile.jar
我首先使用mvn clean package
来构建这个.jar,是否有一个我可以在pom.xml中更改的配置值,以便在我运行java -jar myJarFile.jar
时添加此参数?
我尝试在pom.xml中添加一个属性:
<properties>
<my-command-line-argument>argumentValue</my-command-line-argument>
<properties>
此外,只有在使用Java 9(它称为Add-Exports
)时才需要此参数。
我还尝试添加:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.0</version>
<executions>
<execution>
<id>name</id>
<configuration>
<goals>
<goal>compile</goal>
</goals>
<source>9</source>
<target>9</target>
<compilerArgs>
<arg>--my-command-line-argument</arg>
<arg>argumentValue</arg>
</compilerArgs>
</configuration>
</execution>
</executions>
</plugin>
哪个编译,但没有达到预期的效果。
答案 0 :(得分:1)
看https://docs.oracle.com/javase/7/docs/technotes/tools/windows/javac.html#commandlineargfile
理想/官方的解决方案是使用一个@args文件,该文件可以随jar一起移植或分发。
使用参数@argFile创建文件 致电
java/c @argFile something.jar
文件argFile(无扩展名)将包含任何内容,例如
--patch-module java.transaction=~/.m2\repository/javax/transaction/javax.transaction-api/1.3/javax.transaction-api-1.3.jar --patch-module java.xml.bind=~/.m2\repository/javax/xml/bind/jaxb-api/2.3.0/jaxb-api-2.3.0.jar
如果确实需要,您还可以创建一个类文件。 IntelliJ&Netbeans支持此功能。
尝试将所有导出/使用/提供/打开等内容放置在module-info.java中,而不要使用命令行。
仅将命令行参数保留为只能在命令行上定义的参数。 patch-module add-module等,诸如“ Add-Exports”之类的东西绝对应该在module-info.java类中定义。