2016-05-30 102 views
1

我有一个使用MyEclipse制作的Spring MVC应用程序,它包含生成的源以及我自己的源,以及我在生成的类上定义的方面。在MyEclipse中编译好的所有东西,但我现在想切换到Maven,以便使用持续集成服务器。maven aspectj编织NullPointerException

我一直在摆弄pom.xml很长一段时间了,我打了一道墙,我似乎无法绕过。当Maven到达织造方面的那一刻,我得到下面的异常(只是第几行为了简洁):

[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) 
    ... 

我的pom.xml太长,它粘贴在这里,但构建的部分是作为如下(让我知道,如果你想看到的一些相关性):

<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> 

任何人看到任何错误或遗漏可能会导致异常?仅供参考,我的aspectj依赖项(aspectjrt,aspectjtools和aspectjweaver)的版本是1.8.7。

+0

这有帮助吗? http://stackoverflow.com/questions/11044213/internal-compiler-error-in-eclipse-npe –

+0

谢谢,但不是真的。编译发生在持续集成服务器(Bamboo)上,不在Eclipse内部,因此这些步骤不适用。 – timber

+0

您应该将解决方案转移到下面的答案。 –

回答

0

我似乎发现了这个问题。在pom.xml中,我在aspectj-maven-plugin定义之外,对pj文件的dependencies部分中的所有其他依赖项列出了aspectjtools的依赖项。相反,我将其移入插件中;另外,我将aspectj库的版本更改为1.8.9,因为它看起来像1.8.7展现了一个类似于我发现的bug。之后,一切都奏效了。所以这里是我为aspectj-maven插件修改的定义以供参考:

 <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> 
相关问题