3

Flash Builder バージョンの Eclipse でビルド スクリプトを作成しています。このビルド スクリプトは、起動構成 .launch ファイルをユーザーのワークスペースにインポートする必要があります。ただし、ワークスペースの場所を決定するための利用可能な ANT 変数はないようです。IntelliSense で利用可能な変数を調べているときに、${osgi.instance.area} が現在のワークスペースを指していることに気付きましたが、実行中の ant スクリプトでそれをエコーバックしようとすると、「${osgi.instance.area」と吐き出されました。 }" であり、パスではありません。

どんな助けでも大歓迎です。ありがとうございました!!!

4

3 に答える 3

0

スクリプトがEclipse独自のJVMで実行されている場合、これは通常のEclipseインストールで機能しました。

<eclipse.convertPath resourcepath="workspace_loc:/" property="eclipse.workspace.home"/>

Ant スクリプトを Eclipse 独自の JVM で実行する必要があることを示すには、[外部ツールの構成...] ダイアログを開き、左側のパネルからスクリプトを選択し、[JRE] タブに移動して、明白なラジオ ボタンを選択します。

アムノン・グロスマン

于 2010-12-20T12:17:11.203 に答える
0

ここで誰かが興味を持っているのであれば、私がこれをどのように達成したかですが、これは特にFlash Builder / Flex Builder(私たちのチームが使用しているため)に合わせて調整されており、残念ながら$ {eclipse.home}プロパティをAntで動作させることができなかったので、 ${eclipse.pdebuild.scripts} を使用して、インストール ディレクトリに到達する必要がありました。

    <property name="install_loc" value=""/>

    <!-- find the eclipse install location -->
    <script language="javascript">

        <![CDATA[

        // Because ${eclipse.home} is not available, determine the install
        // location using the pdebuild.scripts location

        self.log("Looking for Eclipse installation...");
        var base = project.getProperty("eclipse.pdebuild.scripts");
        var path_pieces = base.split("/");
        var path = "";
        outterLoop: for(var i = path_pieces.length; i >= 0; --i)
        {
            if(path_pieces[i] == "Adobe Flash Builder 4" || path_pieces[i] == "Adobe Flex Builder 3")
            {
                // After determining which array item refers to the Adobe Flash Builder or Flex Builder
                // installation, start at the beginning of the array and count up to that point, adding
                // paths as you go.
                var k = 0;
                while( k <= i )
                {
                    path += path_pieces[k] + "/";
                    ++k;
                }

                break outterLoop;
            }
        }

        // TODO: MAKE SURE THE PATH IS NOT EMPTY
        self.log("Install path found at: " + path);

        project.setProperty("install_loc", path);

        ]]>

    </script>

    <loadfile
          property="workspace_prefs"
          srcFile="${install_loc}configuration/.settings/org.eclipse.ui.ide.prefs">
    </loadfile>

    <property name="workspace_loc" value=""/>

    <scriptdef name="find-workspace" language="javascript">

        <attribute name="workspace_data"/>

        <![CDATA[

        // Find and return the workspace location

        self.log("Looking for Eclipse workspace...");
        var defs = attributes.get("workspace_data").split("=");
        var loc = defs[defs.length - 1];
        self.log("Workspace found: " + loc);
        project.setProperty("workspace_loc", loc);

        ]]>

    </scriptdef>

    <find-workspace workspace_data="${workspace_prefs}" />

</target>
于 2010-05-13T22:43:04.673 に答える
0

FWIW、これにより、ソリューションの JavaScript 部分と同様の機能が得られると思います。正規表現は、実際に使用するには単純すぎる場合があります。

<pathconvert property="install_loc" dirsep="/">
    <path location="${eclipse.pdebuild.scripts}"/>
    <regexpmapper from="(^.*/Adobe [^/]*)" to="\1/"/>
</pathconvert>

参考までに: Ant pathconvertmapperのドキュメント。

于 2010-05-14T00:07:18.253 に答える