# 为所有平台使用通用构建文件

> 原文： [https://docs.oracle.com/javase/tutorial/deployment/selfContainedApps/commonbuild.html](https://docs.oracle.com/javase/tutorial/deployment/selfContainedApps/commonbuild.html)

要为运行应用程序的每个平台生成独立的应用程序包，必须在每个平台上运行打包工具。您可以选择使用特定于平台的构建文件，也可以设置一个可在所有平台上运行的构建文件。特定于平台的文件可以更简单地设置，但是您必须维护多个文件。

[使用文件关联](../selfContainedApps/fileassociation.html)中描述的文件关联演示使用适用于所有平台的单个构建文件。

构建文件的以下元素支持其用于所有平台：

*   该应用程序的主要类是 Linux 和 Windows 的`ScriptRunnerApplication.java`和 OS X 的`ScriptRunnerApplicationMac.java`。`-pre-init`任务中的以下代码用于确定要使用的类：

    ```
    &lt;condition property="main.class" 
               value="sample.fa.ScriptRunnerApplication"
               else="sample.fa.ScriptRunnerApplicationMac"&gt;
        &lt;not&gt;&lt;os family="mac"/&gt;&lt;/not&gt;
    &lt;/condition&gt;

    ```

*   `-pre-init`任务中的以下代码用于防止在 Linux 或 Windows 上运行时编译 OS X 的主类：

    ```
    &lt;condition property="excludes" value="**/*Mac.java"&gt;
        &lt;not&gt;&lt;os family="mac"/&gt;&lt;/not&gt;
    &lt;/condition&gt;

    ```

*   &LT; FX：bundleArgument&GT;元素用于将参数传递给可用的不同捆绑器。 Bundler 未使用的参数将被忽略，因此构建文件可以包含所有平台所需的参数。以下代码定义了 Linux，OS X 和 Windows 的参数：

    ```
    &lt;fx:bundleArgument arg="classpath" value="FileAssociationsDemo.jar lib/groovy-all-2.3.8.jar"/&gt;

    &lt;fx:bundleArgument arg="win.exe.systemWide" value="true"/&gt;

    &lt;fx:bundleArgument arg="linux.bundleName" value="file-association-demo"/&gt;
    &lt;fx:bundleArgument arg="email" value="maintainer@example.com"/&gt;
    &lt;fx:bundleArgument arg="mac.CFBundleName" value="File Assoc Demo"/&gt;
    &lt;fx:bundleArgument arg="win.menuGroup" value="Java Demos"/&gt;

    ```

有关完整的构建代码，请参见 [`build.xml`](examples/packager_FileAssociations/build.xml) 。

您可以从[自包含应用程序示例](../selfContainedApps/examplesIndex.html)下载文件关联演示的源文件。