2014-10-11 29 views
7

Tôi mới làm quen với maven, và tôi thấy rằng mặc dù tôi thay đổi khía cạnh của jdk của dự án thành 1.8, mỗi khi tôi "cập nhật maven", nó sẽ quay lại jdk 1.6.Làm thế nào để Maven sử dụng JDK1.8 thay vì JDK1.6

Tại sao lại như vậy?

Tôi đã cài đặt jdk 1.8 trong cửa sổ của mình và tôi đang sử dụng nhật thực.

Tôi đọc Specify JDK for Maven to use và thêm thông tin sau nhưng không hoạt động.

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-enforcer-plugin</artifactId> 
    <executions> 
    <execution> 
     <id>enforce-versions</id> 
     <goals> 
     <goal>enforce</goal> 
     </goals> 
     <configuration> 
     <rules> 
      <requireJavaVersion> 
      <version>1.8</version> 
      </requireJavaVersion> 
     </rules> 
     </configuration> 
    </execution> 
    </executions> 
</plugin> 

Trả lời

7

Phiên bản của JDK mà maven sẽ sử dụng được thiết lập trong maven-compiler-plugin giống như vậy:

<plugin> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <version>3.1</version> 
    <configuration> 
     <source>1.8</source> <!-- use java 8 --> 
     <target>1.8</target> 
    </configuration> 
    </plugin> 

Xem Setting the -source and -target of the Java Compiler để biết thêm thông tin.

+0

Vì vậy, những gì về maven-thi-plugin, đây là những gì để làm và lý do tại sao nó giải quyết thread Chỉ định JDK cho Maven sử dụng – Jaskey

+0

Và tôi đã cố gắng, một cảnh báo: Ghi đè phiên bản quản lý 3.1 cho maven- trình biên dịch-plugin, tại sao có một cảnh báo cho các phiên bản – Jaskey

+0

tôi sẽ cố gắng này với wildfly :) thk :) –

0

có lẽ đã quá muộn, nhưng nó làm việc cho tôi:

<!-- we want JDK 1.8 source and binary compatiblility --> 
    <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-compiler-plugin</artifactId> 
     <configuration> 
      <source>1.8</source> 
      <target>1.8</target> 
     </configuration> 
    </plugin> 
    <!-- ... --> 
    <!-- we want sources to be processed by a specific 1.8 javac --> 
    <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-compiler-plugin</artifactId> 
     <version>3.1</version> 
     <configuration> 
      <verbose>true</verbose> 
      <fork>true</fork> 
      <executable>${JAVA_1_8_HOME}/bin/javac</executable> 
     </configuration> 
    </plugin> 

Câu hỏi của bạn giúp tôi rất nhiều anyway :) Cảm ơn :)

0

Trong một bình luận bạn hỏi:

Vì vậy, những gì về maven-thực thi-plugin, đây là những gì để làm gì?

Theo đó documentation cho plugin:.

"Mục tiêu này có nghĩa là để được ràng buộc vào một giai đoạn vòng đời và cấu hình trong pom.xml của bạn Các người thi hành thực hiện các quy tắc cấu hình để kiểm tra một số ràng buộc nhất định. "

Nói cách khác, nó sẽ kiểm tra rằng một số trở ngại đã được thỏa mãn. Nó không gây ra chúng được thỏa mãn.

Trong ví dụ của bạn, hiệu ứng của plugin phải là để làm cho bản dựng không thành công nếu phiên bản Java không phải là Java 1.8.

... và tại sao giải quyết chuỗi "Chỉ định JDK cho Maven để sử dụng"?

Các answer bạn đang đề cập đến nói điều này:.

"Và nó không bao giờ làm hại đến ... thêm maven-thi-plugin để chắc chắn rằng các jdk phải được sử dụng Đây là một tốt thực hành cho pom của bạn."

Như bạn thấy, nó không nói rằng maven-thi-plugin 'giải quyết' vấn đề. Đó là thực sự cung cấp một cách để đảm bảo rằng vấn đề đã được giải quyết ... và không xây dựng Nếu không,

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