[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
[aspectj-users] Can't compile basic mixin example
|
I am probably doing something really dumb here, but I can't seem to compile a basic mixin example under maven. I am using the example code from AspectJ in Action by Ramnivas Laddad Chapter 5(Like Listing 5.15 in section 5.1.5).
I am packaging a basic Nameable mixin into a jar and that seems to work ok in that even though the files have the .java extension, the class files seem to build the aspect stuff correctly including the NameableMixin$Impl.
I have ...
1. src/main/java/ajia/mixin/Entity.java
package ajia.mixin;
public class Entity implements Nameable {
}
2. src/main/java/ajia/mixin/Nameable.java
package ajia.mixin;
public interface Nameable {
public void setName(String name);
public String getName();
static aspect Impl {
private String Nameable.name;
public void Nameable.setName(String name) {
this.name = name;
}
public String Nameable.getName() {
return this.name;
}
}
}
which yields (as expected) ...
$ unzip -l target/myaspect-1.0-SNAPSHOT.jar
Archive: target/myaspect-1.0-SNAPSHOT.jar
Length Date Time Name
--------- ---------- ----- ----
0 2011-11-14 17:17 META-INF/
127 2011-11-14 17:17 META-INF/MANIFEST.MF
0 2011-11-14 17:17 ajia/
0 2011-11-14 17:17 ajia/mixin/
1767 2011-11-14 17:17 ajia/mixin/Nameable.class
4613 2011-11-14 17:17 ajia/mixin/Nameable$Impl.class
1681 2011-11-14 17:17 ajia/Nameable.class
4511 2011-11-14 17:17 ajia/Nameable$Impl.class
525 2011-11-14 17:17 builddef.lst
0 2011-11-14 17:17 META-INF/maven/
0 2011-11-14 17:17 META-INF/maven/ajia.mixin/
0 2011-11-14 17:17 META-INF/maven/ajia.mixin/myaspect/
1318 2011-11-14 16:47 META-INF/maven/ajia.mixin/myaspect/pom.xml
110 2011-11-14 17:17 META-INF/maven/ajia.mixin/myaspect/pom.properties
--------- -------
17296 15 files
Please let me know if any files in this jar are of interest.
Then I try to use this in another project but the build breaks with
[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] <snipped>src/main/java/<blah blah>/MyMixinTarget.java:[14,7] MyMixinTarget is not abstract and does not override abstract method setName(java.lang.String) in ajia/mixin/NameableMixin
[INFO] 1 error
[INFO] -------------------------------------------------------------
Not sure why this is happening. Clearly the ajc is not getting involved where it should, and javac isn't looking for the aspect. Must all mixin targets be under src/main/aspect?
The pom.xml for the target project contains(among many other things) :
<dependency>
<groupId> ajia.mixin</groupId>
<artifactId>myaspect</artifactId>
<version>2.0.7-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.6.11</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>1.6.11</version>
</dependency>
AND
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>aspectj-maven-plugin</artifactId>
<version>1.4</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
<verbose>true</verbose>
<outxml>false</outxml>
<showWeaveInfo>true</showWeaveInfo>
<weaveDependencies>
<weaveDependency>
<groupId>ajia.mixin</groupId>
<artifactId>myaspects</artifactId>
</weaveDependency>
</weaveDependencies>
</configuration>
<executions>
<execution>
<goals>
<goal>compile</goal>
</goals>
</execution>
</executions>
</plugin>
********************************************************************************
Other info:
$ ajc -version
AspectJ Compiler 1.6.6 (1.6.5 - Built: Wednesday Nov 4, 2009 at 04:40:09 GMT) - Eclipse Compiler 0.785_R33x, 3.3
$ java -version
java version "1.6.0_26"
Java(TM) SE Runtime Environment (build 1.6.0_26-b03)
Java HotSpot(TM) 64-Bit Server VM (build 20.1-b02, mixed mode)
$ mvn -version
Apache Maven 2.2.1 (r801777; 2009-08-06 12:16:01-0700)