Как да накарате следващите PDE компилации на продукти да не изграждат наново зависими добавки

Нашият процес на изграждане изгражда няколко продукта от сравнително малък набор от добавки. За да задействаме изграждането, имаме Ant файл, който просто итерира през имената на продуктите, така:

    <for list="all,client1,client1_64,client2,client2_64,rob" param="feature">
        <sequential>
            <java jar="${eclipse.launcher}" fork="true" dir="${basedir}" failonerror="true">
                <arg value="-application" />
                <arg value="org.eclipse.ant.core.antRunner" />
                <arg value="-buildfile" />
                <arg value="${eclipse.pde.build}/scripts/productBuild/productBuild.xml" />
                <arg value="-DbaseLocation=${eclipse.dir}" />
                <arg value="-Dproduct=${feature.dir}/@{feature}/my.product" />
                <arg value="-DbuildLabel=@{feature}-${build.timestamp}" />
                <arg value="-DbuildId=My_@{feature}_${release.name}-${build.timestamp}" />
                <arg value="-Dtimestamp=${release.name}-${build.timestamp}" />
                <arg value="-DbuildDirectory=${build.dir}" />
            </java>
        </sequential>
    </for>

Може би не е изненадващо, че „всичкият“ продукт включва всеки един от нашите плъгини, а останалите някои подгрупи. Проблемът ми е, че всяка итерация през този цикъл прекомпилира и пакетира всеки плъгин, изхвърляйки работата, която е била извършена преди това. Не е голяма работа за няколко продукта, но сега по-голямата част от времето ни за компилиране прекарваме в прекомпилиране и опаковане на добавки.

Може ли някой да ме насочи към по-добър начин да накарам процеса на изграждане да изгражда приставки само веднъж, тъй като всички тези продукти са пакетирани?


person sharakan    schedule 12.08.2011    source източник


Отговори (2)


Тъй като продуктът „всички“ включва всичко, предлагам да го отделите отделно от другите продукти.

След като „всичкият“ продукт е изграден, можете да вземете резултата от него и да го направите достъпен за другите компилации на продукта. Ако вашата „цяла“ продуктова компилация произвежда p2 метаданни, можете да използвате repoBaseLocation и transformedRepoLocation, в противен случай можете да използвате pluginPath.

За следващите компилации на продукта използвайте нов празен buildDirectory, така че да не виждат източника за пакетите, а само двоичния изход от „всички“ продукт. Ако всичко, от което се нуждаят тези продукти, е налично в двоична форма, тогава няма да е необходима компилация и тези компилации по същество се превръщат в операции за опаковане.

person Andrew Niefer    schedule 02.05.2012
comment
Това звучи обещаващо. Ще мине известно време, преди да имам възможност да го пробвам, но ще ви уведомя. - person sharakan; 03.05.2012
comment
Изглежда, че това е правилно. Едно последващо действие обаче. Всеки от тези продукти съдържа една функция, която има всички необходими добавки. Разбирам, че за да използвам p2 по начина, който описвате, ще трябва да създам функции за всеки плъгин и след това продуктите да включват набори от функции. Звучи ли ви правилно? - person sharakan; 15.05.2012

Не можах да накарам pluginPath да работи, така че това, което направих, беше да копирам вече изградените добавки в папката „dropins“ на целта на Eclipse. PDE ги взима автоматично и не ги възстановява.

person Chin    schedule 08.08.2017