2016-05-30 24 views
1

Ich habe eine Spring MVC-Anwendung mit MyEclipse gemacht, die generierte Quellen sowie meine eigenen Quellen enthält, sowie Aspekte, die ich für die generierten Klassen definiert habe. Alles ist in MyEclipse gut zusammengestellt, aber ich möchte jetzt zu Maven wechseln, um einen Continuous Integration Server zu verwenden.maven aspectj weben NullPointerException

Ich habe schon lange mit der pom.xml herumgespielt, und ich habe eine Wand getroffen, über die ich nicht mehr komme. Wenn Maven zum Zeitpunkt des Webens Aspekte bekommt, erhalte ich die folgende Ausnahme (nur die ersten Zeilen der Kürze halber):

[INFO] [aspectj:compile {execution: default}] 
[INFO] Showing AJC message detail for messages of types: [error, warning, fail] 
[ERROR] ABORT 
May 30, 2016 11:48:05 AM org.aspectj.weaver.tools.Jdk14Trace info 
INFO: Dumping to /var/atlassian/application-data/bamboo/xml-data/build-dir/OW-BUIL-JOB1/./ajcore.20160530.114805.876.txt 
[INFO] ------------------------------------------------------------------------ 
[ERROR] BUILD ERROR 
[INFO] ------------------------------------------------------------------------ 
[INFO] AJC compiler errors: 
abort ABORT -- (NullPointerException) null 
null 
java.lang.NullPointerException 
    at org.aspectj.org.eclipse.jdt.internal.compiler.apt.dispatch.AnnotationDiscoveryVisitor.resolveAnnotations(AnnotationDiscoveryVisitor.java:238) 
    at org.aspectj.org.eclipse.jdt.internal.compiler.apt.dispatch.AnnotationDiscoveryVisitor.visit(AnnotationDiscoveryVisitor.java:217) 
    at org.aspectj.org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.traverse(TypeDeclaration.java:1348) 
    at org.aspectj.org.eclipse.jdt.internal.compiler.ast.CompilationUnitDeclaration.traverse(CompilationUnitDeclaration.java:748) 
    ... 

Mein pom.xml zu lang ist es hier einfügen, aber das Build-Teil ist als folgt (lassen Sie mich wissen, wenn Sie einige der Abhängigkeiten sehen wollen):

<build> 
    <directory>bin</directory> 
    <plugins> 
     <plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>build-helper-maven-plugin</artifactId> 
      <version>1.7</version> 
      <executions> 
       <execution> 
        <id>add-source</id> 
        <phase>generate-sources</phase> 
        <goals> 
         <goal>add-source</goal> 
        </goals> 
        <configuration> 
         <sources> 
          <source>src</source> 
          <source>generated</source> 
          <source>resources</source> 
         </sources> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 
     <plugin> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>2.1</version> 
      <configuration> 
       <source>1.6</source> 
       <target>1.6</target> 
       <excludes> 
        <exclude>main/</exclude> 
        <exclude>test/</exclude> 
       </excludes> 
       <useIncrementalCompilation>true</useIncrementalCompilation> 
      </configuration> 
     </plugin> 
     <plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>aspectj-maven-plugin</artifactId> 
      <version>1.8</version> 
      <configuration> 
       <showWeaveInfo>true</showWeaveInfo> 
       <source>1.6</source> 
       <target>1.6</target> 
       <Xlint>ignore</Xlint> 
       <complianceLevel>1.6</complianceLevel> 
       <encoding>UTF-8</encoding> 
       <verbose>true</verbose> 
       <aspectLibraries> 
        <aspectLibrary> 
         <groupId>org.springframework</groupId> 
         <artifactId>spring-aspects</artifactId> 
        </aspectLibrary> 
       </aspectLibraries> 
      </configuration> 
      <executions> 
       <execution> 
        <phase>process-sources</phase> 
        <goals> 
         <goal>compile</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-war-plugin</artifactId> 
      <configuration> 
       <webXml>${project.basedir}/WebRoot/WEB-INF/web.xml</webXml> 
       <warName>oligoWorld</warName> 
       <outputDirectory>${project.basedir}</outputDirectory> 
      </configuration> 
     </plugin> 
    </plugins> 
    <pluginManagement> 
     <plugins> 
      <!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself. --> 
      <plugin> 
       <groupId>org.eclipse.m2e</groupId> 
       <artifactId>lifecycle-mapping</artifactId> 
       <version>1.0.0</version> 
       <configuration> 
        <lifecycleMappingMetadata> 
         <pluginExecutions> 
          <pluginExecution> 
           <pluginExecutionFilter> 
            <groupId>org.codehaus.mojo</groupId> 
            <artifactId>aspectj-maven-plugin</artifactId> 
            <versionRange>[1.8,)</versionRange> 
            <goals> 
             <goal>compile</goal> 
            </goals> 
           </pluginExecutionFilter> 
           <action> 
            <execute /> 
           </action> 
          </pluginExecution> 
         </pluginExecutions> 
        </lifecycleMappingMetadata> 
       </configuration> 
      </plugin> 
     </plugins> 
    </pluginManagement> 
</build> 

Jeder sieht etwas falsch oder fehlt, dass diese Ausnahme verursachen könnten? FYI, die Version meiner aspectj Abhängigkeiten (aspectjrt, aspectjtools und aspectjweaver) ist 1.8.7.

+0

Hilft das? http://stackoverflow.com/questions/11044213/internal-compiler-error-in-eclipse-npe –

+0

Danke, aber nicht wirklich. Die Kompilierung findet auf einem Continuous Integration Server (Bamboo) statt, nicht in Eclipse, daher gelten diese Schritte nicht. – timber

+0

Sie sollten Ihre Lösung auf eine Antwort unten verschieben. –

Antwort

0

Ich habe das Problem gefunden. In der pom.xml hatte ich die Abhängigkeit für aspectjtools aufgelistet mit allen anderen Abhängigkeiten im Abschnitt Abhängigkeiten der pom-Datei, außerhalb der aspectj-maven-Plugin-Definition. Stattdessen habe ich es innerhalb des Plugins verschoben. Außerdem habe ich die Version von aspectj libraries auf 1.8.9 geändert, da es scheint, dass 1.8.7 einen Fehler aufweist, der dem entspricht, was ich gefunden habe. Danach hat alles funktioniert. Also hier ist meine geänderte Definition für das aspectj-maven-plugin als Referenz:

 <plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>aspectj-maven-plugin</artifactId> 
      <version>1.8</version> 
      <dependencies> <!-- The change that fixed it starts here... --> 
       <dependency> 
        <groupId>org.aspectj</groupId> 
        <artifactId>aspectjtools</artifactId> 
        <version>1.8.9</version> 
       </dependency> 
      </dependencies> <!-- ...and ends here. --> 
      <configuration> 
       <showWeaveInfo>true</showWeaveInfo> 
       <source>1.6</source> 
       <target>1.6</target> 
       <Xlint>ignore</Xlint> 
       <complianceLevel>1.6</complianceLevel> 
       <encoding>UTF-8</encoding> 
       <verbose>true</verbose> 
       <aspectLibraries> 
        <aspectLibrary> 
         <groupId>org.springframework</groupId> 
         <artifactId>spring-aspects</artifactId> 
        </aspectLibrary> 
       </aspectLibraries> 
      </configuration> 
     </plugin>