gpt4 book ai didi

windows - 如何在 ANT 中检测 windows 操作系统

转载 作者:可可西里 更新时间:2023-11-01 13:18:05 27 4
gpt4 key购买 nike

我正在使用 ant 编译 Java 应用程序。问题是一些开发人员使用的是 win 7,而其他开发人员使用的是 xp 和 vista。编译的一部分是使用 WIX 构建一个 msi,在 win7 上这是一个目录,在 xp 和 vista 上它在另一个目录中。

ant 任务在 Maven 中进行控制。我正在寻找一种方法来区分 ant 中的 Windows 操作系统与条件标记以设置 wix 目录。有什么想法吗?

我知道它将采用这种格式:

<if>
<condition property="isWin7">
Check for windows 7
</condition>
<then>
set wix path to win 7 installation
</then>
<else>
set to vista/xp wix installation
</else>
</if>

任何帮助都会很棒。

最佳答案

它看起来像 ANT <condition>可以测试操作系统的名称、系列和版本:

基于该链接,我们可以查询一些与操作系统相关的属性。一个是正​​常的 family公共(public)代码中使用的属性:

<!-- CHECK FOR WINDOWS FAMILY OS -->
<condition property="is_windows">
<os family="windows"/>
</condition>

我的 ANT 版本没有打印出 ${os.family} 的解析值.


还有:

  • os.name <--- 这是你需要检查的
  • 操作系统架构
  • 操作系统版本

这是我为展示这些属性的使用而制作的演示脚本:

<?xml version="1.0" encoding="UTF-8"?>
<project name="Test" default="build" >

<!-- CHECK FOR WINDOWS FAMILY OS -->
<condition property="is_windows">
<os family="windows"/>
</condition>

<condition property="is_windows_7">
<os name="Windows 7"/>
</condition>

<!-- DISPLAYS WINDOWS OS -->
<target name="display_windows" if="is_windows" >
<echo message="OS Family is: Windows" />
</target>


<target name="build" >

<antcall target="display_windows" />

<echo message="OS Name is: ${os.name}" />
<echo message="OS Architecture is: ${os.arch}" />
<echo message="OS Version is: ${os.version}" />

</target>

</project>

自从回答了这个问题后,上面的代码已经被提升到我们的生产构建系统中,它在 Windows 和 Mac 之间提供共享功能。


@thekbb提出了删除 <antcall target="display_windows" /> 的好建议, 并更新目标定义以依赖 display_windows按照下面的代码:

    <target name="build" depends="display_windows">

<echo message="OS Name is: ${os.name}" />
<echo message="OS Architecture is: ${os.arch}" />
<echo message="OS Version is: ${os.version}" />

</target>

这是基于 antcall 的事实在新的 JVM 中启动一个新的 ant 实例。有些用户可能会发现这种优化更容易理解;出于性能原因,其他人可能希望这样做。

关于windows - 如何在 ANT 中检测 windows 操作系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9566347/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com