Как мне запустить Maven для компиляции цели в Eclipse?
У меня есть проект Maven с кодом JavaScript. В pom.xml есть специальный плагин компилятора javascript, связанный с целью компиляции. Поэтому, когда я печатаю "mvn compile", исходные файлы JavaScript в src/main/javascript скомпилированы (сжаты и запутаны) и сохранены в каталоге target/classes. В командной строке это отлично работает.
Но теперь я хочу сделать разработку проще, используя Eclipse с плагином m2eclipse. Я хочу, чтобы Eclipse вызывал цель компиляции всякий раз, когда я меняю файл JavaScript. Как я могу это сделать? Когда я сохраняю файл JavaScript, я просто вижу строку журнала "AUTO_BUILD" в консоли maven и ее.
В настройках проекта можно настроить отображение жизненного цикла. Но по какой-то причине я могу добавлять только пользовательские цели, чтобы "после очистки" и "на ресурсе изменился". Когда я добавляю цель "скомпилировать" к отображению жизненного цикла "измененный ресурс", файлы JavaScript скомпилируются при изменении ресурса. Поэтому я мог бы поместить свои файлы JavaScript в папку ресурсов, и это сработает, но это звучит довольно уродливо.
Он также работает, когда я говорю Eclipse "очистить" мой проект. Затем вызывается цель цели компиляции. Таким образом, функциональность есть все, что я просто хочу, чтобы она выполнялась при сохранении файла JavaScript. Это должно быть возможно каким-то образом или нет?
Любые подсказки?
Ответы
Ответ 1
В настройках проекта можно настроить отображение жизненного цикла. Но по какой-то причине я могу добавлять только пользовательские цели, чтобы "после очистки" и "на ресурсе изменился". Когда я добавляю цель "скомпилировать" к отображению жизненного цикла "измененный ресурс", файлы JavaScript скомпилируются при изменении ресурса. Поэтому я мог бы поместить свои файлы JavaScript в папку ресурсов, и это сработает, но это звучит довольно уродливо.
Как вы заметили, цели по умолчанию, выполняемые в инкрементальных строках в Eclipse, это process-resources
и resources:testResources
. Лично я не считаю уродливым поставить js файл под ресурсы, и я бы просто привязал плагин javascript к process-resources
.
Он также работает, когда я говорю Eclipse "очистить" мой проект. Затем вызывается цель цели компиляции.
В полной версии (после очистки от Eclipse) запуск целей: process-test-resources
, который на самом деле является фазой жизненного цикла сборки, которая включает фазу compile
, поэтому compile
вызывается при очистке вашего проекта от Eclipse. Но это не решает вашу проблему (запуск вашего плагина при сохранении).
Как я уже сказал, я просто поместил бы файл js в ресурсы. Но есть и другой вариант: добавление в проект другого Builder. Щелкните правой кнопкой мыши в вашем проекте, затем Свойствa > Строители > Создать > Maven Build и определите цель плагина как цель для запуска во время Автоматических целей сборки (измените или удалите другие цели в соответствии с вашими потребностями):
alt text http://img694.imageshack.us/img694/2382/screenshot003wo.png
Но я предпочитаю другой подход.
Ответ 2
так как ответ @pascal-thivent устарел (как упоминалось в комментариях) и намекнул @akostadinov https://www.eclipse.org/m2e/documentation/m2e-execution-not-covered.html:
Вы должны добавить действительное действие жизненного цикла maven
Пример для банки, которая автоматически развертывается локально maven install plugin:
<build>
<!-- ... -->
<pluginManagement>
<plugins>
<plugin>
<groupId>org.eclipse.m2e</groupId>
<artifactId>lifecycle-mapping</artifactId>
<version>1.0.0</version>
<configuration>
<lifecycleMappingMetadata>
<pluginExecutions>
<pluginExecution>
<pluginExecutionFilter>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<versionRange>[2.0,)</versionRange>
<goals>
<goal>jar</goal>
</goals>
</pluginExecutionFilter>
<action>
<execute>
<runOnConfiguration>true</runOnConfiguration>
<runOnIncremental>true</runOnIncremental>
</execute>
</action>
</pluginExecution>
<pluginExecution>
<pluginExecutionFilter>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-install-plugin</artifactId>
<versionRange>[2.5.0,)</versionRange>
<goals>
<goal>install</goal>
</goals>
</pluginExecutionFilter>
<action>
<execute>
<runOnConfiguration>true</runOnConfiguration>
<runOnIncremental>true</runOnIncremental>
</execute>
</action>
</pluginExecution>
</pluginExecutions>
</lifecycleMappingMetadata>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
Подсказка: относится к Maven Project Builder вызывается каждый раз при изменении исходного файла (GWT) и в качестве предупреждения: установка обычно включает тесты, если вы включили их в вашем обычном цикле сборки maven