Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java tools & IDE's > [maven] AspectJ


Автор: efferson 20.3.2010, 09:50
У меня проблема с использованием maven'овского плагина для aspectj. Цель: скомпилировать с помощью команды mvn compile классы с вшитыми аспектами. Для этого в файле pom.xml описываю следующую зависимость и плагин:

Код

<dependencies>
...
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>1.6.7</version>
</dependency>
...
</dependencies>
<build>
    <pluginManagement>
        ...
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>aspectj-maven-plugin</artifactId>
            <version>1.3</version>
            <configuration>
                <source>1.6</source>
                <target>1.6</target>
                <encoding>UTF-8</encoding>
                <showWeaveInfo>true</showWeaveInfo>
                <verbose>true</verbose>
            </configuration>
        </plugin>
        ...
     </pluginManagement>
</build>

После чего говорю maven compile. Однако, при таком раскладе аспекты не пришиваются к основным классам. Тем не менее запуск с явным указанием целей (mvn aspectj:compile aspectj:test-compile) даёт желаемый результат.

Почитав http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html я решил, что плагин при подключении не добавляет свои цели в фазы test-compile и compile lifecycl'a "default", и решил задать их явно:

Код

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>aspectj-maven-plugin</artifactId>
    <version>1.3</version>
    <configuration>
        <source>1.6</source>
        <target>1.6</target>
        <encoding>UTF-8</encoding>
        <showWeaveInfo>true</showWeaveInfo>
        <verbose>true</verbose>
    </configuration>
    <executions>
        <execution>
            <id>aspectj-compile</id>
            <phase>compile</phase>
            <goals>
                <goal>compile</goal>
            </goals>
        </execution>
        <execution>
            <id>aspectj:test-compile</id>
            <phase>test-compile</phase>
            <goals>
                <goal>test-compile</goal>
            </goals>
        </execution>
    </executions>
</plugin>


Однако ситуацию это не изменило. Я чего-то не понимаю в логике работы maven'a или это какой-то баг?

Автор: MaxPayneC 20.3.2010, 11:46
Код

            <!--Компилятор для аспектов-->
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>aspectj-maven-plugin</artifactId>
                <version>1.2</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>compile</goal>
                            <goal>test-compile</goal>
                        </goals>
                        <configuration>
                            <complianceLevel>1.6</complianceLevel>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

Мой вариант.

Автор: efferson 21.3.2010, 15:19
И при это при вызове целей mvn clean compile у вас "зашиваются" аспекты? У меня к сожалению с вашим раскладом код скомпилировался обычным компилятором без учёта аспектов :(

Автор: MaxPayneC 21.3.2010, 15:33
То есть если вызывать можо плагина, аспекты привязываются, а если фазу компиле - нет?

Автор: efferson 26.3.2010, 08:15
Да, именно так (

Автор: efferson 27.3.2010, 12:26
Ололо! Проблема как выяснилось была в том, что описание плагинов находилось внутри  элемента pluginManagement. Если убрать его - проблема решается автоматически.

Автор: MaxPayneC 27.3.2010, 17:44
Пометьте вопрос решенным тогда, раз разобрались.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)