Написание процессора аннотаций для maven-processor-plugin - PullRequest
8 голосов
/ 14 марта 2011

Я заинтересован в написании процессора аннотаций для плагина maven-processor-plugin.Я относительно новичок в Maven.

Куда в пути проекта должен идти исходный код Java процессора (например, src / main / java / ...), чтобы он правильно компилировался, но не заканчивалсякак часть моего файла JAR артефакта?

1 Ответ

9 голосов
/ 14 марта 2011

Самый простой способ - сохранить ваш процессор аннотаций в отдельном проекте, который вы включаете в качестве зависимости.

Если это не работает для вас, используйте этот конфиг

КомпиляторПлагин:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>2.3.2</version>
    <configuration>
        <source>1.5</source>
        <target>1.5</target>
    </configuration>
    <inherited>true</inherited>
    <executions>
        <execution>
            <id>default-compile</id>
            <inherited>true</inherited>
            <configuration>
                <!-- limit first compilation run to processor -->
                <includes>path/to/processor</includes>
            </configuration>
        </execution>
        <execution>
            <id>after-processing</id>
            <phase>process-classes</phase>
            <goals>
                <goal>compile</goal>
            </goals>
            <inherited>false</inherited>
            <configuration>
                <excludes>path/to/processor</excludes>
            </configuration>
        </execution>
    </executions>
</plugin>

Плагин процессора:

<plugin>
    <groupId>org.bsc.maven</groupId>
    <artifactId>maven-processor-plugin</artifactId>
    <executions>
        <execution>
            <id>process</id>
            <goals>
                <goal>process</goal>
            </goals>
            <phase>compile</phase>
            <configuration>
                <processors>
                    <processor>com.yourcompany.YourProcessor</processor>
                </processors>
            </configuration>
        </execution>
    </executions>
</plugin>

(Обратите внимание, что это должно выполняться между двумя запусками компиляции, поэтому важно, чтобыВы помещаете этот код в pom.xml после вышеупомянутой конфигурации подключаемого модуля maven-compiler)

Плагин Jar:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <version>2.3.1</version>
    <configuration>
        <excludes>path/to/processor</excludes>
    </configuration>
    <inherited>true</inherited>
</plugin>
...