【问题标题】:Passing VM parameter in pom.xml在 pom.xml 中传递 VM 参数
【发布时间】:2018-10-19 07:24:24
【问题描述】:

我的程序仅适用于 ip4 并在 ip6 上出现错误,因此我需要使用

运行 jar

-Djava.net.preferIPv4Stack=true

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

【问题讨论】:

    标签: java maven pom.xml


    【解决方案1】:

    不,在构建时无法做到这一点。参数在java -jar artifact.jar运行时传递给JVM。

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

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

    【讨论】:

    • 当我构建 jar 时,这是否也适用于另一台非开发人员计算机?
    • 是的,因为这是在您的代码中,所以它可以在任何地方工作,只要您在启动 jar 时没有可供用户选择的替代主类
    【解决方案2】:

    你可以使用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

    【讨论】:

    • 这也适用于构建时间吗?还是只装在罐子里?当我构建 jar 时,这是否也可以在另一台非开发人员计算机上工作?
    • 它在 中,我认为它适用于构建时间,但我不确定
    猜你喜欢
    • 2023-03-10
    • 2023-03-26
    • 2013-09-11
    • 2012-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-22
    相关资源
    最近更新 更多