2015-12-14 16 views
5

Tôi đang sử dụng sonar 4.5.1 và nó tương thích với JDK 1.7 trở lên. Với các dự án có trên JDK1.6 trong Jenkins, tôi muốn thực hiện phân tích sonar bằng JDK1.7 . Để đạt được điều này dưới Jenkins, trong các mục tiêu và tùy chọn của maven, tôi đang sử dụng -Dsonar.java.source = jdk1.7.0_76 nhưng trong quá trình xây dựng, dường như jdk1.7.0_76 không được chọn để phân tích sonar. Phân tích Sonar vẫn đang được thực hiện với phiên bản JDK 1.6 được định nghĩa trong phần JDK trong Jenkins. Điều này dẫn đến lỗi xây dựng: "Trình tìm kiếm plugin không được hỗ trợ với Java 1.6.0_26". Tôi không muốn sử dụng sonar trong hành động sau khi xây dựng bởi vì nó ném một số lỗi khác vì vậy tôi muốn cung cấp các chi tiết sonar trong mục tiêu maven và các tùy chọn mà thôi. Tại sao jdk1.7.0_76 không được chọn? Tôi đang thiếu gì? Có cách nào khác để cung cấp phiên bản JDK1.7 không?

(Đã chỉnh sửa)
Yêu cầu của tôi: phân tích maven bằng cách sử dụng jdk 1.6 và phân tích sonar phải được thực hiện với jdk 1.7 trở lên (bước phân tích sonar được cung cấp trong mục tiêu maven và không sử dụng hành động Postar)
và tùy chọn
cài đặt sạch -Dmaven.test.skip = true -Dsonar.jdbc.url = jdbc: postgresql: //sonardb.test.com: 5555/sonar -Dsonar.host.url = http://localhost:9000/sonar -Dsonar.java.target = jdk1.8.0_40 -Dsonar.java.source = jdk1.8.0_40 org.codehaus.mojo: sonar-maven-plugin: 1.0: sonar -Dsonar.branch = test

Hãy tìm thấy bên dưới các ảnh chụp màn hình
Cung cấp phiên bản JDK trong mục tiêu và tùy chọn maven

jdk required for maven maven goals and options

Trả lời

0

Bạn cần chạy phân tích với Java 7 trở lên. Thuộc tính sonar.java.source chỉ cho trình phân tích biết mã Java của bạn tương thích với phiên bản nào.

Bạn đang miễn phí để biên dịch mã của bạn với Java 6 (hoặc thấp hơn), nhưng máy quét (cho dù đó là SonarQube Scanner, SonarQube Scanner cho Maven, ...) phải chạy với Java 7.

+0

Tôi không sử dụng trình điều khiển sóng siêu âm ở đây. Như tôi đã đề cập trong thư, tôi biết rằng phân tích nên được thực hiện với Java 7 hoặc cao hơn nhưng cách đúng (cú pháp) của việc cung cấp trong mục tiêu và tùy chọn maven là cái tôi đã đề cập là không được chấp nhận trong khi xây dựng. –

+0

Bạn có thể cần phải cập nhật $ JAVA_HOME ngay trước và ngay sau khi phân tích –

1

có một cái nhìn tại mvn kịch bản của bạn:

# ---------------------------------------------------------------------------- 
# Maven2 Start Up Batch script 
# 
# Required ENV vars: 
# ------------------ 
# JAVA_HOME - location of a JDK home dir 
# 

sự thay đổi này được thực hiện ở cấp độ của môi trường Maven của bạn. Trước khi khởi chạy Maven, bạn cần đặt biến môi trường JAVA_HOME đến vị trí của phiên bản JDK 1.7 của bạn.

Tôi đoán bạn đang sử dụng một bước sau khi xây dựng execute shell. Nếu bạn đang sử dụng bash bạn chỉ cần gõ JAVA_HOME="path to your JDK 1.7 home" trước dòng chứa lệnh mvn bạn trong khu vực command văn bản của cấu hình công việc Jenkins' của bạn như sau:

enter image description here

+0

vui lòng tìm câu hỏi đã chỉnh sửa bằng ảnh chụp màn hình đã thêm. –

+0

Nếu bạn muốn chạy phân tích bằng jdk thay thế, bạn phải sử dụng bước đăng! – Kraal

+0

Bạn có ý nói rằng tham số này không hoạt động: -Dsonar.java.target = jdk1.8.0_40 -Dsonar.java.source = jdk1.8.0_40 nếu được cung cấp trong Mục tiêu và Tùy chọn? –

0

Mặc dù đây là một câu hỏi cũ vẫn trả lời vì lợi ích của người khác:

Nếu bạn định cấu hình trang của công việc và nhấp vào nút "Advance" cho plugin Sonar, bạn sẽ có tùy chọn để chọn JDK giống như được chọn dưới đây JDK 7 được chọn cho Jenkins của bạn (cho điều này bạn có thể vào Quản lý Jenkins):

Screen Shot of Sonar Plugin under Job configure Page

Các vấn đề liên quan