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?
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:
- Ważne jest, aby umieścić tę konfigurację w sekcji pluginManagement, a nie bezpośrednio pod wtyczkami.
- 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.
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.
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