Найти местоположение рабочей области с помощью ANT - PullRequest
3 голосов
/ 13 мая 2010

Я работаю над сценарием сборки в версии Eclipse для Flash Builder. Этот сценарий сборки должен импортировать файлы запуска конфигурации .launch в рабочее пространство пользователя. Однако, кажется, нет доступной переменной ANT для определения местоположения рабочей области. Проходя доступные переменные с помощью intellisense, я заметил, что $ {osgi.instance.area} указывает на мое текущее рабочее пространство, но когда я попытался отозвать его обратно в работающем скрипте ant, он просто выплюнул "$ {osgi.instance.area } ", а не путь.

Любая помощь будет принята с благодарностью. Спасибо!!!

Ответы [ 3 ]

0 голосов
/ 14 мая 2010

FWIW, я думаю, что это может дать вам функциональность, аналогичную javascript-части вашего решения. Регулярное выражение может быть слишком упрощенным для реального использования.

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

Для справки: Ant pathconvert и mapper docs.

0 голосов
/ 20 декабря 2010

Это сработало для меня при обычной установке Eclipse, при условии, что скрипт запускается в собственной JVM Eclipse:

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

Чтобы обозначить, что скрипт Ant должен выполняться в собственной JVM Eclipse, откройте диалоговое окно «Конфигурации внешних инструментов ...», выберите свой сценарий на левой панели, перейдите на вкладку «JRE» и выберите очевидное радио кнопка.

Амнон Гроссман

0 голосов
/ 14 мая 2010

Если кому-то интересно, вот как я этого добился, тем не менее, это специально для 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>
...