如何在使用Maven构建jar时添加命令行参数

时间:2017-12-19 17:16:04

标签: java maven

我可以通过运行:

从命令行运行.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>

哪个编译,但没有达到预期的效果。

1 个答案:

答案 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类中定义。