如何在tomee-maven-plugin中禁用断言 - " args"的优先级是什么?

时间:2016-12-24 12:41:42

标签: assertion tomee operator-precedence tomee-7

我试图找出如何通过tomee-maven-plugin禁用断言。 默认情况下,启动的TomEE JVM的控制台输出通知我:

 Command line argument: -ea

因此,为了禁用断言,我做了一个很好的猜测并尝试-da作为args(见下文)

<plugin>
            <groupId>org.apache.tomee.maven</groupId>
            <artifactId>tomee-maven-plugin</artifactId>
            <version>${tomee.plugin.version}</version>
            <configuration>
                <tomeeVersion>${tomee.version}</tomeeVersion>
                <tomeeClassifier>plus</tomeeClassifier>
                <debug>false</debug>
                <tomeeHttpPort>8282</tomeeHttpPort>
                <debugPort>5005</debugPort>
                <args>-da</args>
                ....

好消息:断言事实上已被禁用,但是,我对这里的args优先级感到疑惑,因为控制台输出仍会打印出来:

[main] sun.reflect.DelegatingMethodAccessorImpl.invoke Command line argument: -da
[main] sun.reflect.DelegatingMethodAccessorImpl.invoke Command line argument: -Dtomee.force-reloadable=true
[main] sun.reflect.DelegatingMethodAccessorImpl.invoke Command line argument: -Dtomee.jsp-development=true
.... some more lines
[main] sun.reflect.DelegatingMethodAccessorImpl.invoke Command line argument: -ea

如您所见,-da首先打印,然后 -ea但是在运行时断言已被禁用。

我的问题是:

  1. 如何在此上下文中定义precende?
  2. 此配置是否健壮,以便-da在此设置中始终优先于-ea
  3. 仅供参考:目前使用tomee-7.0.2。

1 个答案:

答案 0 :(得分:1)

ea将始终位于classpath和main(Bootstrap)之前,因为我们尝试不覆盖提供的值(通常用于系统属性)。这里的问题是da!= ea,所以我们没有发现它是一样的。