Maven,Scala,Spring,AspectJ

Maven,Scala,Spring,AspectJ

问题描述:

有人知道您是否可以在编译时使用AspectJ&编织scala类.春天.我在所有Java类上都进行了编译,但是我似乎无法使它在使用@Configurable的Scala类中正常工作.

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.

在背景方面,我已经进行了几天的研究.真痛苦无论如何,这就是答案.是的,可以做到,您不能使用aspectj maven插件.您必须使用antrun maven插件.快乐的Scala编码!

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>