我有具有以下依赖一个JavaEE的项目:如何使用javaee-api为SonarQube构建maven构建?
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<scope>provided</scope>
</dependency>
该项目建立,包和部署正确/预期。然而,当我尝试运行SonarQube打造这个项目,我得到以下类型的警告与最终的致命错误
Nov 04, 2015 11:18:31 AM net.sourceforge.pmd.lang.java.typeresolution.ClassTypeResolver visit
WARNING: Could not find class com.admin.agent.AgentAdminController, due to: java.lang.ClassFormatError: JVMCFRE074 no Code attribute specified; class=javax/servlet/GenericServlet, method=<init>()V, pc=0
....
....
[ERROR] Failed to execute goal org.codehaus.mojo:sonar-maven-plugin:2.7.1:sonar (default-cli) on project build: Execution default-cli of goal org.codehaus.mojo:sonar-maven-plugin:2.7.1:sonar failed: An API incompatibility was encountered while executing org.codehaus.mojo:sonar-maven-plugin:2.7.1:sonar: java.lang.ClassFormatError: JVMCFRE074 no Code attribute specified; class=javax/servlet/jsp/PageContext, method=<init>()V, pc=0
一堆搜索后,我发现罪魁祸首是JavaEE的-API依赖。仅作为一个API(没有实现)SonarQube抱怨丢失的类。我发现的唯一的解决方案是与JBoss的实施,以取代依赖性:
<dependency>
<groupId>org.jboss.spec</groupId>
<artifactId>jboss-javaee-6.0</artifactId>
<version>1.0.0.Final</version>
<type>pom</type>
<scope>provided</scope>
</dependency>
然而,这并没有为我工作很好。我不得不修改我的pom并删除我原来的javaee-api依赖项并将其替换。这意味着我的任何版本都不能使用javax.javaee-api依赖关系吗?
就我而言,功能化的Maven构建应该可以通过Sonar进行扫描。
我该如何向Sonar表明我希望它为构建(而不是项目pom中的构件)使用不同的依赖关系,还是让它忽略javax.javaee-api依赖关系?
你显然已经问过,并放弃它:http://stackoverflow.com/questions/29152487/how-to-ignore-javax-files-in-sonarqube。 – Gimby
@Gimby - 哇...你是对的;我什至不记得发布!我想6个月后,我仍在寻找更好的解决方案! –