2011-11-23 34 views
5

xét nghiệm junit My chạy qua kiến ​​1,7 từ bên trong môi trường Eclipse của tôi, nhưng việc xây dựng failes khi nhiệm vụ junitreport được thực hiện:Ant <junitreport> thất bại vì Xalan của (XSLT) tính năng xử lý an toàn

BUILD FAILED ... /build.xml:222: Lỗi khi áp dụng phép biến đổi: javax.xml.transform.TransformerException: java.lang.RuntimeException: Sử dụng hàm mở rộng 'xalan: //org.apache.tools.ant.util.StringUtils: thay thế ' không được phép khi tính năng xử lý bảo mật được đặt thành true.

Tôi đã cố gắng tìm hiểu cách thực hiện tác vụ junitreport vô hiệu hóa tính năng xử lý bảo mật (mà tôi không cần và chỉ theo cách của tôi), nhưng tôi không có đầu mối như thế nào từ nhiệm vụ không ' t có một thuộc tính để vô hiệu hóa nó. Hay tôi nên làm gì đó khác để thực hiện công việc này?

Trả lời

3

Điều này có thể liên quan đến rất giống known bug in Ant 1.8.2.

Các bugfix for Ant 1.8.3 đã cam kết, nhưng Apache Ant 1.8.3 vẫn chưa được phát hành như của ngày 25 tháng 1 năm 2012. Các WHATSNEW mô tả cho bugfix này là:

<junitreport> did not work in embedded environments on JDK 7. 
Bugzilla Report 51668. 

Khi 1.8.3 Ant được phát hành và được tích hợp vào plugin Eclipse Ant, vấn đề này cần được giải quyết.

Trong thời gian chờ đợi, bạn có thể chỉnh sửa tập lệnh xây dựng của mình để chỉ chạy mục tiêu JUnitReport nếu chạy Ant từ dòng lệnh, thay vì từ trong Eclipse. Để thực hiện xác định này, hãy tìm tệp có trong thư mục % ANT_HOME%/lib thường xuyên không có trong thư mục plugin Eclipse Ant của bạn (hoặc tạo tệp ở đó), sau đó đặt thuộc tính nếu tệp được phát hiện. VÍ DỤ.

Chỉ cần trước khi kết thúc mục tiêu JUnit của bạn:

<available file="${ant.home}/lib/ant.pom" property="full.ant"/> 

Vào đầu mục tiêu JUnitReport của bạn:

<target name="junitreport" description="Create a consolidated test results report" if="full.ant"> 

Các mảnh vỡ Ant trên làm việc vì ant.home được thiết lập để các Thư mục Eclipse Ant Plugin chỉ khi Ant được chạy từ bên trong Eclipse. Khi Ant được chạy từ một dòng lệnh, ant.home sẽ khớp với biến môi trường ANT_HOME của bạn. Ngoài ra còn có một thuộc tính Ant eclipse.running Ant, nhưng tôi không thể phát hiện thuộc tính này.

Một tùy chọn tạm thời khác là tải xuống các tệp JAR mới nhất của Ant hàng đêm được xây dựng từ this link trên trang dự án Apach Ant, sau đó đặt các tệp JAR đó trong thư mục con plugin Eclipse Ant tương ứng. Không đảm bảo điều này sẽ làm việc.

0

Tôi đã cố gắng tìm ra cách làm nhiệm vụ junitreport vô hiệu hóa tính năng xử lý bảo mật (mà tôi không cần và chỉ theo cách của tôi vào thời điểm này) nhưng tôi không có đầu mối như thế nào từ nhiệm vụ không ' t có một thuộc tính để vô hiệu hóa nó.

Bạn luôn có thể nhận xét công việc.

+0

Cảm ơn câu trả lời của bạn. Có lẽ câu của tôi không rõ ràng. Tôi muốn vô hiệu hóa 'tính năng xử lý an toàn' nhưng tôi _do_ cần junitreport. – Almer

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