2013-02-17 32 views
9

Tôi có một dự án Java được xây dựng bằng Maven. Tôi muốn thêm các tùy chọn vào dòng lệnh "javac" - đặc biệt, tôi muốn chuyển một vài tùy chọn "-J".Làm cách nào để chuyển các tùy chọn "-J" sang javac thông qua Maven?

Vì vậy, bình thường tôi sẽ làm một cái gì đó như thế này:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <configuration> 
     <compilerArgument>-J-Xdebug</compilerArgument> 
     <compilerArgument>-J-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005</compilerArgument> 
    </configuration> 
</plugin> 

Tuy nhiên khi tôi cố gắng này tôi nhận được lỗi có dạng:

[ERROR] Failure executing javac, but could not parse the error: 
javac: invalid flag: -J-Xdebug 
Usage: javac <options> <source files> 
use -help for a list of possible options 

On tra chặt chẽ hơn, có vẻ như maven-compiler- plugin viết tất cả các đối số trình biên dịch vào một tệp tùy chọn và gọi javac như 'javac @optionfile'. Theo tài liệu chính thức cho javac tại http://docs.oracle.com/javase/6/docs/technotes/tools/solaris/javac.html:

@argfiles Một hoặc nhiều tệp liệt kê tùy chọn và tệp nguồn. Tùy chọn -J không được cho phép trong các tệp này.

Vì vậy, có vẻ như tùy chọn trong trình biên dịch maven-plugin sẽ không hoạt động - nó muốn sử dụng tệp arg, tệp arg không thể chứa các tùy chọn tôi muốn.

Tôi cũng đã thấy một số đề xuất để sử dụng bản đồ thay thế - tuy nhiên điều này có kết quả tương tự khi tôi thử.

Có tùy chọn nào khác không?

+2

vẻ như bạn đã trúng một vấn đề được biết đến - http://jira.codehaus.org/browse/MCOMPILER-129 – radai

Trả lời

4

Plugin trình biên dịch cho phép bạn specify the location of the jdk, vì vậy bạn có thể sử dụng một cái gì đó như thế này:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <version>3.0</version> 
    <configuration> 
     <verbose>true</verbose> 
     <fork>true</fork> 
     <executable><!-- path-to-javac-invoking-script --></executable> 
     <compilerVersion>1.3</compilerVersion> 
    </configuration> 
    </plugin> 

và cung cấp nó với một đường dẫn đến một kịch bản/file bat đó sẽ vượt qua tất cả các đối số cùng với javac thực cùng với các đối số phụ của bạn?

EDIT-the original issue đã được cố định trong trình biên dịch Plugin 2.4+ và điều này chỉ nên làm việc bây giờ không workaround tôi

+0

Vâng, tôi có thể xác nhận rằng nó hoạt động ... nó chắc chắn là một workaround tuy nhiên, nhưng ngắn nhận được lỗi cố định thượng nguồn và chờ đợi cho một phiên bản mới của các plugin, điều này sẽ làm việc :) –

+0

@RichardDowner - bạn didnt hỏi cho đẹp ;-) – radai