Как начать Maven "компилировать" цель при сохранении в Eclipse?

У меня есть проект Maven с кодом JavaScript. Существует специальный плагин компилятора javascript, подключенный к цели компиляции в pom.XML. Поэтому, когда я набираю "mvn compile", источники JavaScript в src/main/javascript компилируются (сжимаются и запутываются) и сохраняются в каталоге target/classes. В командной строке это отлично работает.

но теперь я хочу сделать разработку проще, используя Eclipse с плагином m2eclipse. Я хочу, чтобы Eclipse вызвал компиляцию цель всякий раз, когда я меняю файл JavaScript. Как я могу это сделать? Когда я сохраняю файл JavaScript, я просто вижу строку журнала "AUTO_BUILD" в консоли maven, и все.

в настройках проекта можно настроить отображение жизненного цикла. Но по какой-то причине я могу добавить только пользовательские цели в "после очистки" и "на измененном ресурсе". Когда я добавляю цель "компиляция" в сопоставление жизненного цикла "измененный ресурс", файлы JavaScript компилируются при изменении ресурса. Так Я мог бы поместить свои файлы JavaScript в папку ресурсов, и это сработало бы, но это звучит довольно уродливо.

Он также работает, когда я говорю Eclipse "очистить" мой проект. Затем вызывается цель компиляции. Поэтому функциональность - это все, что я хочу, чтобы она выполнялась при сохранении файла JavaScript. Это должно быть возможно или нет?

какие-то намеки?

2 ответов


в настройках проекта можно настроить отображение жизненного цикла. Но по какой-то причине я могу добавить только пользовательские цели в "после очистки" и "на измененном ресурсе". Когда я добавляю цель "компиляция" в сопоставление жизненного цикла "измененный ресурс", файлы JavaScript компилируются при изменении ресурса. Поэтому я мог бы поместить свои файлы JavaScript в папку ресурсов, и это сработало бы, но это звучит довольно уродливо.

как вы заметили, цели по умолчанию, выполняемые при инкрементных сборках в Eclipse, являются process-resources и resources:testResources. Лично я не считаю уродливым помещать JS-файл под ресурсы, и я бы просто привязал плагин javascript на process-resources.

он также работает, когда я говорю Eclipse "очистить" мой проект. Затем вызывается цель компиляции.

при полной сборке (после очистки от Eclipse) цели запускаются process-test-resources который на самом деле является этапом жизненного цикла сборки, который включает compile этап, вот почему compile получить вызов, когда вы очищаете свой проект от Eclipse. Но это не решает вашу проблему (запуск вашего плагина при сохранении).


как я уже сказал, Я бы просто поместил файл js под ресурсы. Но, возможно, есть и другой вариант: добавить в проект другого строителя. щелкните правой кнопкой мыши на вашем проекте, тогда Свойства > Строители > Новый > Maven Build и определите свою цель плагина как цель для запуска во время Цели Автоматического Построения (измените или удалите другие цели в соответствии с вашими потребностями):

alt текст http://img694.imageshack.us/img694/2382/screenshot003wo.png

но я предпочитаю другой подход.


поскольку @pascal-thivent ответ устарел (как указано в комментариях) и намекнул @akostadinov https://www.eclipse.org/m2e/documentation/m2e-execution-not-covered.html:

вы должны добавить действительное действие жизненного цикла maven

пример для jar, который автоматически развертывается локально Мэйвен установить плагин:

<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