Подтвердить что ты не робот

M2e: Сгенерированный код с помощью exec-maven-plugin

Я использовал m2eclipse в течение 2 лет или около того и теперь переключился на m2e.

К сожалению, это нарушило некоторые функции для меня.

Во многих проектах я создал код Java, который обычно генерируется через основной класс в проекте библиотеки. Здесь типичная настройка:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>exec-maven-plugin</artifactId>
    <executions>
        <execution>
            <id>generateDTOs</id>
            <phase>generate-sources</phase>
            <goals>
                <goal>java</goal>
            </goals>
            <configuration>
                <classpathScope>test</classpathScope>
                <mainClass>com.somecompany.SomeCodeGenerator</mainClass>
                <arguments>
                    <argument>${project.build.directory}/generated-sources/foo</argument>
                    <argument>${project.basedir}/path/to/a/config/file</argument>
                    <argument>more arguments</argument>
                </arguments>
            </configuration>
        </execution>
    </executions>
</plugin>
<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>build-helper-maven-plugin</artifactId>
    <executions>
        <execution>
            <id>addDtoSourceFolder</id>
            <goals>
                <goal>add-source</goal>
            </goals>
            <phase>process-sources</phase>
            <configuration>
                <sources>
                    <source>${project.build.directory}/generated-sources/foo</source>
                </sources>
            </configuration>
        </execution>
    </executions>
</plugin>

Раньше мне просто нужно было импортировать этот проект с eclipse в качестве проекта maven, код будет автоматически выполнен, а исходная папка добавлена ​​в проект eclipse.

Теперь m2e установил "соединитель" для плагина buildhelper, поэтому исходная папка создана, но мне нужно вручную инициировать генерацию кода, выполнив Run As > Maven > generate-sources. Это действительно раздражает, я хотел бы, чтобы maven build отвечала на изменения pom.xml, Project > Clean ..., обновления SVN, запуск Eclipse и т.д., Как это было ранее.

Что делать, чтобы заставить m2e работать как m2eclipse?

4b9b3361

Ответ 1

Вы должны сказать M2E, что нормально запускать генератор кода как часть сборки Eclipse:

<project>
  <build>
     [...]
     <pluginManagement>
      <plugins>
        <!--This plugin configuration is used to store Eclipse m2e settings only. It has no influence 
          on the Maven build itself. -->
        <plugin>
          <groupId>org.eclipse.m2e</groupId>
          <artifactId>lifecycle-mapping</artifactId>
          <version>1.0.0</version>
          <configuration>
            <lifecycleMappingMetadata>
              <pluginExecutions>
                <pluginExecution>
                  <pluginExecutionFilter>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>exec-maven-plugin</artifactId>
                    <versionRange>[,)</versionRange>
                    <goals>
                      <goal>java</goal>
                    </goals>
                  </pluginExecutionFilter>
                  <action>
                    <execute/>
                  </action>
                </pluginExecution>
              </pluginExecutions>
            </lifecycleMappingMetadata>
          </configuration>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>
</project>

Примечания:

  • Важно разместить эту конфигурацию в разделе pluginManagement, а не непосредственно под плагинами.
  • Это приведет к тому, что M2E выполнит все java-исполнения, указанные в вашем POM, как часть каждой сборки Eclipse. Это означает, что они будут бегать часто и быть большой неприятностью, если они будут медленными. Я не уверен, как вы получите M2E для запуска некоторых из них и пропустите других. Вероятно, вам придется размещать нежелательные исполнения в профилях.

Ответ 2

В Eclipse вы можете определить, какой этап жизненного цикла будет выполняться во время импорта, который по умолчанию пуст. Вы можете просто изменить это на технологические ресурсы или просто настроить Maven → Update Project Configuration. В конфигурации (Windows → Настройки → Maven) вы можете изменить поведение по умолчанию, чтобы упростить вашу жизнь.