Явное управление пропущенными Ant-задачами для ускорения компиляции GWT - PullRequest
1 голос
/ 11 октября 2010

Я использую задачу Ant для вызова компилятора Google GWT, например:

<java failonerror="true" fork="true" classname="com.google.gwt.dev.Compiler">
 <arg value="package.of.GWTClass" />
</java>

Это работает, но я бы хотел избежать перекомпиляции всего проекта во время каждой сборки Ant, при этом ни одна из зависимостей не изменилась. Я знаю, что Ant не может автоматически отследить эти зависимости, но есть ли у меня возможность вручную закодировать их и выборочно пропустить цель, когда ничего не изменилось?

Ответы [ 3 ]

1 голос
/ 15 октября 2010

Вы могли бы также попытаться распараллелить шаг компиляции GWT в вашей сборке ANT с компиляцией Java.Мы использовали тег ANT для запуска шага компиляции GWT вместе со стандартным шагом компиляции Java.Очевидно, что это действительно поможет, только если ваш компьютер имеет более одного ядра.

Например,

<parallel>
    <antcall target="gwt-compile"/>
    <sequential>
        <antcall target="compile/java"/>
    </sequential>
    <parallel>
        <antcall target="compile/test-unit"/>
        <antcall target="compile/test-integration"/>
        <antcall target="compile/test-gwt"/>
        <antcall target="compile/test-selenium"/>
    </parallel>
</parallel>

Мы также определили файлы модулей, которые предназначались только для браузера Firefox для запуска тестовой частиbuild (для нашей проверки в buid), а затем также более полный файл модуля со всеми поддерживаемыми браузерами для полной сборки в сборке Continuous Integration.

0 голосов
/ 15 октября 2010

используйте задачу обновления в сочетании с gwt. Он проверяет, является ли файл более поздним, чем другой, и устанавливает свойство, если оно есть. Вы сравниваете исходный файл gwt с датами выходных файлов * .js, и, если он более поздний, вы делаете компиляцию.

вам нужно будет получить все файлы, которые будет использовать компилятор gwt, что может быть сложно, если у вас есть только имя модуля, и вы не можете легко обработать дерево наследования, но простой, но не всегда оптимальный подход состоит в том, чтобы просто Используйте каждый файл Java GWT. Затем в задаче компиляции gwt проверьте свойство перед компиляцией.

0 голосов
/ 11 октября 2010

Вы можете добавить предложение if к цели-муравью.Мы используем его следующим образом:

<target name="gwt-compile" if="gwt" description="Compile GWT related code.">
    <!-- ... -->
</target>

Когда вы вызываете цель, вы можете включить компиляцию, установив свойство gwt с помощью -D:

ant -Dgwt=yes gwt-compile

Противоположность if в цели - unless.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...