2010-05-13 2 views
3

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

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

ответ

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> 
0

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

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

Для справки: Ant pathconvert и mapper документы.

+0

Я сделаю снимок, когда попаду в офис. Спасибо, Мартин! –

0

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

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

Для обозначения Ant скрипта должны работать в собственной виртуальной машине Java в Eclipse, откройте «External Tools Конфигурации ... ", выберите свой сценарий с левой панели, перейдите на вкладку« JRE »и выберите очевидный переключатель.

Amnon Grossman

+0

Я не вижу eclipse.workspace.home как вариант. – prolink007

Смежные вопросы