Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Maven, Scala, Spring, AspectJ

Does anyone know if you can weave scala classes at compile time with aspectJ & spring. I have compile time weaving working for all my java classes but I can't seem to get it to work for my scala classes that use @Configurable.

like image 921
user766647 Avatar asked Oct 11 '22 23:10

user766647


1 Answers

For background I have been working on this for a couple of days. What a pain. Anyways here's the answer. Yes it can be done, you just can't use the aspectj maven plugin. You have to use the antrun maven plugin. Happy Scala Coding!

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-antrun-plugin</artifactId>
            <version>1.6</version>
            <executions>
                <execution>
                    <phase>compile</phase>
                    <goals>
                        <goal>run</goal>
                    </goals>
                    <configuration>
                        <target>
                            <taskdef resource="org/aspectj/tools/ant/taskdefs/aspectjTaskdefs.properties"
                                classpathref="maven.plugin.classpath" />
                            <iajc
                                srcDir="src/main/scala"
                                destDir="target/classes"
                                inpath="target/classes"
                                source="1.6"
                                aspectPath="${org.springframework:spring-aspects:jar}"
                                classpathRef="maven.compile.classpath"
                                Xlint="ignore" />
                        </target>
                    </configuration>
                </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>
like image 64
user766647 Avatar answered Oct 14 '22 03:10

user766647