2012-04-28 8 views
9

Tôi không muốn phụ thuộc vào biến môi trường bên ngoài để buộc maven xây dựng các lớp của tôi với UTF-8. Trên Mac, tôi đã nhận được tất cả các loại vấn đề khi xây dựng với maven. Chỉ có tùy chọn bên dưới giải quyết được vấn đề:Có cách nào để tạo các tệp lớp xây dựng maven với UTF-8 mà không sử dụng JAVA_TOOL_OPTIONS bên ngoài không?

export JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF-8 
mvn clean install 

Tuy nhiên tôi đang phân phối dự án của mình và không có ý nghĩa khi đặt biến môi trường này để xây dựng dự án một cách chính xác.

thử tất cả mọi thứ như đã mô tả ở đây: enabling UTF-8 encoding for clojure source files

Bất cứ ai cũng có một ánh sáng trên rằng vấn đề Maven tuyệt vời?

+0

Bạn có thấy lỗi/cảnh báo mã hóa trong đầu ra của maven không? – andyb

Trả lời

30

@Joop Eggen đã đưa ra câu trả lời đúng ở đây: https://stackoverflow.com/a/10367745/962872

Nó là không đủ để xác định tài sản đó. Bạn PHẢI vượt qua nó bên trong các plugin thích hợp. Nó sẽ không đi bằng ma thuật bên trong.

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <version>...</version> 
    <configuration> 
     <source>1.6</source> 
     <target>1.6</target> 
     <encoding>${project.build.sourceEncoding}</encoding> 
    </configuration> 
</plugin> 
<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-resources-plugin</artifactId> 
    <version>...</version> 
    <configuration> 
     <encoding>${project.build.sourceEncoding}</encoding> 
    </configuration> 
</plugin> 
... 
<properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
</properties> 
+0

Rất tốt và cảm ơn bạn đã viết nó lên. Vui vì bạn có câu trả lời cho cả hai câu hỏi. – andyb

+1

Câu trả lời là đúng, nhưng chỉ để biết thông tin: Theo tài liệu chính thức của Maven, chỉ cần thêm thẻ '' là OK. Trích dẫn: _For plugins ** theo hướng dẫn của chúng tôi cho mã hóa tệp nguồn * *, điều này cũng dễ dàng như việc thêm thuộc tính sau vào POM của bạn (hoặc một trong các POM mẹ): ..._ Nguồn: http://maven.apache.org/general.html#encoding-warning – mithrop

+1

maven-compiler Tài liệu -plugin và maven-resources-plugin cho biết: mã hóa tham số: Giá trị mặc định là: '$ {project.build.sourceEncoding}'. Vì vậy, tôi cho rằng việc thiết lập thuộc tính là đủ ngày nay – leo

1

Có có được, xác định

<properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
</properties> 
+0

Điều này KHÔNG hoạt động trên Mac. Tôi đã thử nghiệm ở đây nhiều lần mà không thành công. :( – chrisapotek

+2

Hơn bạn có vấn đề khác. Bạn đang sử dụng phiên bản Maven nào? Và bạn gặp phải vấn đề gì? Thông báo lỗi, v.v. – khmarbaise

0

Tôi đã gặp sự cố này nhưng chỉ khi chạy trình biên dịch từ Emacs. Tôi không thể thay đổi poms của dự án. Điều gì có hiệu quả đối với tôi là đặt các mục sau vào ~/.mavenrc

LANG=en_US.UTF-8