Hi Alexander,
Thanks for replying. I have since done additional testing/validation with
Eclipse Luna but no additional success.
I'm running into a problematic issue with m2e and Eclipse (vs command line
maven build). I am using a clean installation of Luna WTP 4.4.2 with m2e
1.5.1.
I have aspectj-maven-plugin configured in my pom.xml and the connector
installed as well.
My plugin configuration specifies:
<executions>
<execution>
<id>compile</id>
<goals>
<goal>compile</goal>
</goals>
<configuration>
<sources>
<source>
<basedir>${project.build.sourceDirectory}</basedir>
</source>
</sources>
</configuration>
</execution>
<execution>
<id>test compile</id>
<goals>
<goal>test-compile</goal>
</goals>
<configuration>
<sources>
<source>
<basedir>${project.build.testSourceDirectory}</basedir>
</source>
</sources>
<weaveDirectories>
<param>${project.build.outputDirectory}</param>
</weaveDirectories>
</configuration>
</execution>
</executions>
The goal is to have an aspect from my src/test/java path woven into my
classes from src/main/java but output only in my target/test-classes. The
reasoning behind this is that the aspect is only used for junit testing and
not for normal code compilation/use.
When I build from the command line, everything works properly. The
"compile" goal compiles & weaves all my src/main/java files to the
target/classes output directory and the "test-compile" compiles & weaves
all my src/test/java files into target/test-classes.
However, when I build from within Eclipse, my Aspects in src/test/java are
woven into classes in target/classes as well (see target/classes/com/test/
ServiceImpl.c
<https://github.com/benze/aspectj-maven-plugin-defect-example/blob/master/src/main/java/com/test/ServiceImpl.java>
lass. With the decompiler, I can see the MangleAspect has been woven in.
Additionally, only the files from src/test/java are output into
target/test-classes while the pom instructs ajc to do otherwise (weave all
class files from target/classes into target/test-classes).
I've enabled debug from cmd line when I build (mvn -X) and I can see
appropriate parameters passed to the aspectj-maven-plugin. However when I
enable debug logging from
.metadata/.plugins/org.eclipse.m2e.logback.configuration/logback.${m2e.version}.xml,
I do not see the parameters that are being passed to the
aspectj-maven-plugin.
Does this have something to do with the lifecycle mapping connector? Is
there a way to debug how that is working?
I uploaded my sample project to my github:
https://github.com/benze/aspectj-maven-plugin-defect-example
I did notice, however, if I disable the m2e connector and just use
lifecycle mapping within my pom directly that instructs the aspectj plugin
to execute on compile/test-compile goals, my output seems to be as I would
expect. Can this be an m2e connector issue? I'm not entirely clear on how
this connector works, or how it is injected into the m2e maven compile
process.
Thanks,
Eric
On Sat, Jun 20, 2015 at 7:53 AM, Alexander Kriegisch <
[email protected]> wrote:
> Hi Eric.
>
> I cannot reproduce your problem. I have just given it a quick try with the
> attached sample project. It contains
> - a Maven build,
> - a corresponding IntelliJ IDEA 14 Maven project,
> - a corresponding Eclipse Luna SR1 (4.4.1) project, imported from Maven.
>
> Both in IDEA and Eclipse the result is the same with Maven 3: The test
> aspect only applies to the sample JUnit test, *not* to the main class. When
> running the main class from either IDE, the aspect is not applied.
>
> Maybe you have made a mistake setting up your Eclipse project. I recommend
> you to import your Maven build into a fresh Eclipse project. I also
> recommend to use a recent Maven AspectJ Plugin (1.7 instead of 1.2) and a
> recent AspectJ version (1.8.6, not 1.7.0, or at least
> the latest 1.7 versiobn 1.7.4).
>
> Feel free to ask follow-up questions.
>
> Regards
> --
> Alexander Kriegisch
> http://scrum-master.de
>
>
> Eric B schrieb am 18.06.2015 20:25:
>
> > I posted a question on StackOverflow, but haven't received much traction
> there, so I thought I would check with people on this list as well.
> >
> >
> > I'm having trouble with Eclipse weaving aspects from my test folder into
> my target/classes folder (as opposed to putting the woven classes into
> target/test-classes)
> >
> >
> > I've got a maven project in which I have @Aspect classes in my
> src/test/java folder. If I build from command line, everything runs
> properly. If however, I build from within Eclipse, the compiler weaves my
> aspects into my target class files and puts them in target/classes.
> >
> >
> > This obviously causes me troubles as the JVM tries to find the woven
> Aspect and throws NoClassDefFoundError (since the actual aspect.class is
> only in target/test-classes).
> >
> >
> > Has anyone encountered this before? Is there a way to instruct
> ajc/Eclipse/maven/m2e to put the woven class file into target/test-classes
> and not target/classes when it is due to an aspect from the test folder?
> >
> >
> > My pom defn shows the following for the ajc plugin:
> >
> >
> > <plugin>
> >
> > <groupId>org.codehaus.mojo</groupId>
> >
> > <artifactId>aspectj-maven-plugin</artifactId>
> >
> > <version>1.2</version>
> >
> > <executions>
> >
> > <execution>
> >
> > <goals>
> >
> > <goal>compile</goal>
> >
> > <goal>test-compile</goal>
> >
> > </goals>
> >
> > <configuration>
> >
> > <outxml>true</outxml>
> >
> > <aspectLibraries>
> >
> > <aspectLibrary>
> >
> > <groupId>org.springframework</groupId>
> >
> > <artifactId>spring-aspects</artifactId>
> >
> > </aspectLibrary>
> >
> > </aspectLibraries>
> >
> > <source>7</source>
> >
> > <target>7</target>
> >
> > </configuration>
> >
> > </execution>
> >
> > </executions>
> >
> > <dependencies>
> >
> > <dependency>
> >
> > <groupId>org.aspectj</groupId>
> >
> > <artifactId>aspectjrt</artifactId>
> >
> > <version>1.7.0</version>
> >
> > <scope>compile</scope>
> >
> > </dependency>
> >
> > <dependency>
> >
> > <groupId>org.aspectj</groupId>
> >
> > <artifactId>aspectjtools</artifactId>
> >
> > <version>1.7.0</version>
> >
> > <scope>compile</scope>
> >
> > </dependency>
> >
> > </dependencies>
> >
> > <configuration>
> >
> > <outxml>true</outxml>
> >
> > <aspectLibraries>
> >
> > <aspectLibrary>
> >
> > <groupId>org.springframework</groupId>
> >
> > <artifactId>spring-aspects</artifactId>
> >
> > </aspectLibrary>
> >
> > </aspectLibraries>
> >
> > <source>7</source>
> >
> > <target>7</target>
> >
> > </configuration>
> >
> > </plugin>
> >
> >
> > I've tried running maven 3.0.4 and 3.2.5, but no difference.
> >
> >
> > Thanks,
> >
> > Eric
> >
> >
>
> _______________________________________________
> aspectj-users mailing list
> [email protected]
> To change your delivery options, retrieve your password, or unsubscribe
> from this list, visit
> https://dev.eclipse.org/mailman/listinfo/aspectj-users
>
_______________________________________________
aspectj-users mailing list
[email protected]
To change your delivery options, retrieve your password, or unsubscribe from
this list, visit
https://dev.eclipse.org/mailman/listinfo/aspectj-users