Maj
21
2010

Projekt Maven z AspectJ

Słowa kluczowe: , , | Kategorie: Java
No Gravatar

Programowaniem aspektowym (ang. Aspect-oriented programming) zainteresowałem się ponad rok temu. Niestety od tamtej pory nie znalazłem dość czasu, aby zająć się tym zagadnieniem na poważnie. Nadszedł moment, kiedy nie jestem już całkowicie pochłonięty pracą z Seam Framework. Teraz nareszcie mogę zagłębić się w tajniki biblioteki AspectJ.

Niniejszy wpis nie będzie zawierał żadnych przykładowych aspektów. Na początku postaram się omówić konfigurację projektu w pliku pom.xml.

Ponieważ zamierzam wykorzystać aspekty oparte o adnotacje, potrzebuję kompilacji kodu przynajmniej w wersji Java 1.5:

<project>
  <modelVersion>4.0.0</modelVersion>
  […]

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>2.3</version>
        <configuration>
          <source>1.5</source>
          <target>1.5</target>
        </configuration>
      </plugin>
[…]

W następnej kolejności, dodaję wtyczkę aspectj-maven-plugin, która będzie kompilować aspekty razem z kodem oraz testami:

[…]
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>aspectj-maven-plugin</artifactId>
        <version>1.3</version>
        <configuration>
          <complianceLevel>1.5</complianceLevel>
        </configuration>
        <executions>
          <execution>
            <goals>
              <goal>compile</goal>
              <goal>test-compile</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
[…]

Na sam koniec muszę wskazać wtyczce maven-surefire-plugin położenie pliku XML zawierającego konfigurację TestNG:

[…]
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.5</version>
        <configuration>
          <suiteXmlFiles>
            <suiteXmlFile>src/test/resources/testng.xml</suiteXmlFile>
          </suiteXmlFiles>
        </configuration>
      </plugin>
    </plugins>
  </build>
[…]

Aby móc tworzyć aspekty, do zależności muszę dodać bibliotekę aspectjrt:

[…]
  <dependencies>
    <dependency>
      <groupId>org.aspectj</groupId>
      <artifactId>aspectjrt</artifactId>
      <version>1.6.8</version>
    </dependency>
[…]

Na sam koniec, do zależności dodaję bibliotekę TestNG:

[…]
    <dependency>
      <groupId>org.testng</groupId>
      <artifactId>testng</artifactId>
      <version>5.11</version>
      <classifier>jdk15</classifier>
      <scope>test</scope>
    </dependency>
  </dependencies>

  […]
</project>

Oczywiście należałoby ustawić pozostałe parametry projektu, jak groupId, artifactId, version, packaging czy version. Przydadzą się także raporty maven-surefire-report-plugin oraz maven-javadoc-plugin, o których pisałem przy okazji strony wtyczki Maven.

Następnym razem postaram się omówić pierwszy przykład prostego aspektu wraz z testami.

Napisz Komentarz

*