Как мне начать "компилировать" цель Maven при сохранении в Eclipse? - PullRequest
26 голосов
/ 13 апреля 2010

У меня есть проект 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. Это должно быть как-то возможно, или нет?

Есть подсказки?

Ответы [ 2 ]

10 голосов
/ 14 апреля 2010

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

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

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

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


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

альтернативный текст http://img694.imageshack.us/img694/2382/screenshot003wo.png

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

2 голосов
/ 04 ноября 2015

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

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

Пример jar-файла, который автоматически развертывается локально с помощью 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

...