AspectJ Example
------------------

TestAspect.java
----------------

package com.aspectj;

import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.JoinPoint;

@Aspect
public class TestAspect {

    @Before("execution (* com.aspectj.TestTarget.test*(..))")
    public void advice(JoinPoint joinPoint) {
        System.out.printf("TestAspect.advice() called on '%s'%n", joinPoint);
    }
}


TestTarget.java
-----------------

package com.aspectj;

public class TestTarget {

    public static void main(String[] args) {
        System.out.println("----------------------->--------- Start test -----------<---------------------");
        new TestTarget().test();
        System.out.println("----------------------->--------- End test -----------<---------------------");
    }

    public void test() {
        System.out.println("TestTarget.test()");
    }
}



aop.xml   - keep this file in META-INF 
----------------------------------------

<aspectj>
    <aspects>
        <aspect name="com.aspectj.TestAspect"/>
    </aspects>

    <weaver options="-verbose">
        <include within="com.aspectj.*"/>
    </weaver>
</aspectj>



build.xml
---------

<?xml version="1.0"?>
<project name="aspectj-example" xmlns:aspectj="antlib:org.aspectj">

    <property name="src.dir" value="src/main/java"/>
    <property name="resource.dir" value="src/main/resources"/>
    <property name="target.dir" value="target"/>
    <property name="classes.dir" value="${target.dir}/classes"/>

    <taskdef uri="antlib:org.aspectj"
            resource="org/aspectj/antlib.xml"
            classpath="${resource.dir}/aspectjtools.jar"/>

    <path id="aspectj.libs">
        <fileset dir="${resource.dir}"/>
    </path>

    <target name="clean">
        <delete dir="${target.dir}"/>
        <mkdir dir="${target.dir}"/>
        <mkdir dir="${classes.dir}"/>
    </target>

    <target name="compiletime" depends="clean">
        <aspectj:iajc source="1.5" srcdir="${src.dir}" classpathref="aspectj.libs" destDir="${classes.dir}"/>
        <java classname="com.aspectj.TestTarget" fork="true">
            <classpath>
                <path refid="aspectj.libs"/>
                <pathelement path="${classes.dir}"/>
            </classpath>
        </java>
    </target>

    <target name="postcompile" depends="clean">

        <echo message="Compiling..."/>
        <javac debug="true" srcdir="${src.dir}" classpathref="aspectj.libs" destdir="${classes.dir}"/>

        <echo message="Weaving..."/>
        <aspectj:iajc classpathref="aspectj.libs" inpath="${classes.dir}" aspectpath="${src.dir}" outJar="${classes.dir}/test.jar"/>

        <echo message="Running..."/>
        <java classname="com.aspectj.TestTarget" fork="true">
            <classpath>
                <path refid="aspectj.libs"/>
                <pathelement path="${classes.dir}/test.jar"/>
            </classpath>
        </java>

    </target>

    <target name="loadtime" depends="clean">

        <echo message="Compiling..."/>
        <javac debug="true" srcdir="${src.dir}" classpathref="aspectj.libs" destdir="${classes.dir}"/>

        <echo message="Running..."/>
        <java classname="com.aspectj.TestTarget" fork="true">
            <jvmarg value="-javaagent:${resource.dir}/aspectjweaver.jar"/>
            <classpath>
                <path refid="aspectj.libs"/>
                <pathelement path="${classes.dir}"/>
                <pathelement path="${resource.dir}"/>
            </classpath>
        </java>

    </target>

</project>



pom.xml
-----------

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

    <modelVersion>4.0.0</modelVersion>
    <groupId>com.test.aspectj</groupId>
    <artifactId>test</artifactId>
    <packaging>jar</packaging>
    <version>1.0-SNAPSHOT</version>
    <name>test</name>
    <url>http://maven.apache.org</url>

    <dependencies>
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjrt</artifactId>
            <version>1.6.5</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>

            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>aspectj-maven-plugin</artifactId>
                <version>1.2</version>
                <configuration>
                    <source>1.5</source>
                    <target>1.5</target>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>compile</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>exec-maven-plugin</artifactId>
                <version>1.1</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>java</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <mainClass>com.aspectj.TestTarget</mainClass>
                </configuration>
            </plugin>
        </plugins>    </build>
</project>

and keep the below jar files under classpath and resource dir for build to run
aspectjrt.jar,aspectjtools.jar,aspectjweaver.jar

thanks
Anil.E