我有具有以下依賴一個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個月後,我仍在尋找更好的解決方案! –