在 pom.xml 中传递 VM 参数

Passing VM parameter in pom.xml

我的程序只适用于 ip4,使用 ip6 时出错,所以我需要 运行 jar

-Djava.net.preferIPv4Stack=true

有没有办法将此行写入 pom.xml 并且每当有人打开应用程序将尝试连接 IPv4 的 jar 时?

不,在构建时无法做到这一点。当java -jar artifact.jar为运行.

时,参数传递给JVM

您的替代方法是自己在代码中执行此操作(main 方法可能是您可以尽早更改此 属性 的地方):

public static void main(String... args) {
    System.setProperty("java.net.preferIPv4Stack", "true");
}

您可以使用 maven-surefire-plugin :

<build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.21.0</version>
        <configuration>
          <systemPropertyVariables>

            <java.net.preferIPv4Stack>true</java.net.preferIPv4Stack>

          </systemPropertyVariables>
        </configuration>
      </plugin>
    </plugins>
  </build>

更多详细信息在此 link