M2E: wygenerowany kod za pomocą wtyczki exec-maven

Używam m2eclipse od około 2 lat, a teraz przełączyłem się na m2e.

Niestety, to zepsuło mi pewną funkcjonalność.

W wielu projektach generowałem kod Javy, Zwykle generowany przez główną klasę w projekcie bibliotecznym. Oto typowa konfiguracja:

<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>

Wcześniej musiałbym tylko zaimportować ten projekt z eclipse jako projekt Mavena, kod byłby automatycznie wykonywany, a folder źródłowy dodawany do projekt eclipse.

Teraz, m2e zainstalowaĺ '"konektor" dla wtyczki buildhelper, wiÄ ™ c tworzony jest katalog ĹşrĂłdĹ 'owy, ale musiaĹ' em rÄ ™ cznie uruchomiÄ ‡ generowanie kodu wykonujÄ ... c Run As > Maven > generate-sources. To jest naprawdę irytujące, chciałbym, aby Maven build zareagował na pom.zmiany xml, Project > Clean ..., aktualizacje SVN, startup Eclipse itp. tak jak poprzednio.

Co mogę zrobić, aby m2e działało jak m2eclipse?

Author: Betlista, 2011-07-14

2 answers

Musisz powiedzieć M2E, że możesz uruchomić generator kodu w ramach Eclipse build:

<project>
  <build>
     [...]
     <pluginManagement>
      <plugins>
        <!--This plugin's 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>

Uwagi:

  1. Ważne jest, aby umieścić tę konfigurację w sekcji pluginManagement, a nie bezpośrednio pod wtyczkami.
  2. spowoduje to, że M2E wykona wszystkie egzekucje Javy określone w Twoim POM jako część każdej kompilacji Eclipse. Oznacza to, że będą działać często i będą dużym uciążliwością, jeśli będą powolne. Nie wiem, jak skłoniłbyś M2E do uruchomienia niektórych z nich i pomiń innych. Prawdopodobnie musiałbyś umieścić niechciane egzekucje w profilach.
 20
Author: Jonathan Fuerth,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-10-19 19:50:45

W Eclipse możesz określić, który krok cyklu życia będzie uruchamiany podczas importu, który jest domyślnie pusty. Możesz po prostu zmienić to na process-resources lub po prostu Maven - > Update Project Configuration. W konfiguracji (Windows - > Preferencje - > Maven) możesz zmienić domyślne zachowanie, aby uprościć działanie.

 1
Author: khmarbaise,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-07-14 10:50:16