Как включить ткачество времени компиляции aspectj с Java 7 и maven - PullRequest
20 голосов
/ 04 января 2012

У меня есть проект, который в настоящее время работает с Java 6 и ткачество времени компиляции.Мы используем следующий pom для включения пружинных и наших собственных аспектов:

<plugin>
  <groupId>org.codehaus.mojo</groupId>
  <artifactId>aspectj-maven-plugin</artifactId>
  <version>1.4</version>
      <configuration>
        <showWeaveInfo>true</showWeaveInfo>
        <source>1.6</source>
        <target>1.6</target>
        <Xlint>ignore</Xlint>
        <complianceLevel>1.6</complianceLevel>
        <encoding>UTF-8</encoding>
        <verbose>false</verbose>
        <aspectLibraries>
          <aspectLibrary>
             <groupId>org.springframework</groupId>
             <artifactId>spring-aspects</artifactId>
          </aspectLibrary>
        </aspectLibraries>
      </configuration>
      <executions>
        <execution>
          <goals>
            <goal>compile</goal>
            <goal>test-compile</goal>
          </goals>
        </execution>
      </executions>
    </plugin>

Я пробовал различные конфигурации, но не могу заставить их работать с Java 7. Если кто-то может поделиться рабочим pom или руководить имбыло бы здорово.

1 Ответ

29 голосов
/ 01 марта 2012

После перехода на версию 1.7.0 из aspectjtools все работает нормально. Кроме того, вам нужно передать компилятору параметр версии как -1.7 (при использовании параметра target возникли проблемы). Если кому-то понадобится более подробная информация, оставьте комментарий, и я добавлю дополнительную информацию о конфигурации.
Вы можете взять рабочий пример отсюда: Spring, AspectJ и Maven пример
Вот определение рабочего плагина из pom (compiler-version = "1.7", aspectj.version = "1.7.0")

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>aspectj-maven-plugin</artifactId>
    <version>1.4</version>
    <configuration>
        <showWeaveInfo>true</showWeaveInfo>
        <source>${compiler.version}</source>
        <target>${compiler.version}</target>
        <Xlint>ignore</Xlint>
        <complianceLevel>${compiler.version}</complianceLevel>
        <encoding>UTF-8</encoding>
        <verbose>false</verbose>
        <aspectLibraries>
            <aspectLibrary>
                <groupId>org.springframework</groupId>
                <artifactId>spring-aspects</artifactId>
            </aspectLibrary>
        </aspectLibraries>
    </configuration>
    <executions>
        <execution>
            <goals>
                <goal>compile</goal>
                <goal>test-compile</goal>
            </goals>
        </execution>
    </executions>
    <dependencies>
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjrt</artifactId>
            <version>${aspectj.version}</version>
        </dependency>
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjtools</artifactId>
            <version>${aspectj.version}</version>
        </dependency>
    </dependencies>
</plugin>
...