运维开发网
广告位招商联系QQ:123077622
 
广告位招商联系QQ:123077622

如何将主机和端口参数传递给ant以供Java主函数使用

运维开发网 https://www.qedev.com 2020-05-09 13:51 出处:网络 作者:运维开发网整理
我很难找到如何正确使用蚂蚁目标中的args. 我有一个蚂蚁目标,“我们的客户端”,它应该采用两个(或零)参数,一个主机和一个端口供客户端监听.我认为通过键入以下内容可以很容易地将参数传递给shell: ant our-client -Dhost.arg=127.0.0.1 -Dport.arg=8081 这似乎不起作用.在我的程序的主要功能中,我有一个记录器,它打印出传入的主机和端口.在解释我的a
我很难找到如何正确使用蚂蚁目标中的args.

我有一个蚂蚁目标,“我们的客户端”,它应该采用两个(或零)参数,一个主机和一个端口供客户端监听.我认为通过键入以下内容可以很容易地将参数传递给shell:

ant our-client -Dhost.arg=127.0.0.1 -Dport.arg=8081

这似乎不起作用.在我的程序的主要功能中,我有一个记录器,它打印出传入的主机和端口.在解释我的ant构建文件中的内容之后,我将讨论这个问题.

这是我为客户编写的目标.

<target name="our-client" depends="package" description="compiles, packages, and runs the student client">
    <java jar="${java.dist}/catan-client.jar" dir="${java.dist}" fork="yes">
        <arg value="${host.arg}"/>
        <arg value="${port.arg}"/>
        <sysproperty key="com.sun.management.jmxremote" value=""/>
        <assertions>
            <enable/>
        </assertions>
    </java>
</target>

我似乎无法理解的部分是这些“arg”的工作方式.在ant构建文件的顶部,我已经定义了这两个属性,如下所示.

<property name="port.arg" value="8081"/>
<property name="host.arg" value="localhost"/>

我这样做是为了让这个特定目标的参数是可选的.如果没有提供,它将在默认设置下运行.

回到我的程序的主要功能.无论我在命令行输入什么,主机总是设置为localhost,端口同样设置为8081.这是我的main函数内部的日志记录部分

public static void main(final String[] args)
{
...
  if (args.length == 2)
  {
    String host = args[0];
    String port = args[1];
    LOGGER.info("host: " + host + ", port: " + port);
  }
...
}

命令行始终显示:

INFO: host: localhost, port: 8081

我认为我必须在ant命令调用中弄乱一些东西.在我看来,它忽略了输入并使用每个属性的默认值.

任何帮助表示赞赏.

问题是使用PowerShell.尽管您的ant命令在命令提示符中有效,但它在PowerShell中不起作用.

在PowerShell中,如果参数名称中包含句点(“.”),PowerShell会将其作为其他内容(可能是另一个ant命令)读取.相反,尝试这样做:

ant our-client "-Dhost.arg=127.0.0.1" "-Dport.arg=8081"

扫码领视频副本.gif

0

精彩评论

暂无评论...
验证码 换一张
取 消