Как да стартирам обработка на анотации чрез maven 3.3?

От години работим с maven-processor-plugin като отделна цел (използвайки proc:none на maven-compiler-plugin). Ние най-накрая надграждаме от maven 3.0.5 до най-новата 3.3.3 и виждам, че плъгинът за maven-processor изглежда като цяло мъртъв. Доколкото мога да кажа, не е мигриран от кода на Google.

Ние използваме обработка на анотации предимно за генериране на класове кама. Не мога да си спомня причините, но по това време (в dagger-1) останахме с впечатлението, че е по-добре да правим това по време на generate-sources и generate-test-sources фазите, а не по време на compile и test-compile, поради което използвахме maven- процесорен плъгин за начало. Имайте предвид, че искаме всичко да се играе добре и в eclipse/m2e.

Има ли нов, по-добър начин за стартиране на обработка на анотации от maven, който е удобен за eclipse?


person Ben    schedule 25.08.2015    source източник


Отговори (1)


Можете да използвате maven-compiler-plugin за обработка на анотации, тъй като функционалността съществува в javac. За да извършите обработка на анотация и редовно компилиране в отделни фази, можете да направите множество изпълнения на приставката, едно с обработката на анотация е включена, другата с нея е изключена. Конфигурацията за това е следната:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.5</version>
    <executions>
        <execution>
            <id>process-annotations</id>
            <phase>generate-sources</phase>
            <goals>
                <goal>compile</goal>
            </goals>
            <configuration>
                <compilerArgs>
                    <arg>-proc:only</arg>
                    <arg>-processor</arg>
                    <arg>MyAnnotationProcessor</arg>
                </compilerArgs>
            </configuration>
        </execution>
        <execution>
            <id>default-compile</id> <!-- using an id of default-compile will override the default execution -->
            <phase>compile</phase>
            <goals>
                <goal>compile</goal>
            </goals>
            <configuration>
                <compilerArgs>
                    <arg>-proc:none</arg>
                </compilerArgs>
            </configuration>
        </execution>
    </executions>
</plugin>
person heenenee    schedule 27.01.2016
comment
Надстроих до 3.6.0 и открих, че трябва да премахна аргумента -proc:none за фазата на компилиране на моите пояснения не бяха компилирани. Знаете ли за промяна в друга фаза, която би премахнала компилациите на класове за анотации? Вижте моя въпрос (и pom) в stackoverflow.com/questions/49160582/ - person Sinc; 09.03.2018
comment
MyAnnotationProcessor напълно квалифицирано име ли е (както в пакет + име на клас)? - person Dragas; 30.11.2018