2011-10-26 50 views
6

Tôi đang sử dụng Maven 3.0.3 với JUnit 4.8.1. Trong bài kiểm tra JUnit của tôi, làm thế nào để đọc project.artifactId được định nghĩa trong tệp pom.xml Maven của tôi? Trong pom tôi, tôi cóCách đọc thuộc tính Maven từ kiểm tra JUnit?

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
<modelVersion>4.0.0</modelVersion> 

<groupId>com.myco.pplus2</groupId> 
<artifactId>pplus2</artifactId> 

Nhưng điều này không hoạt động trong phạm vi kiểm tra JUnit tôi để Gete id vật ...

@Before 
public void setUp() { 
    ...   
    System.out.println("artifactId:" + System.getProperty("project.build.sourceEncoding")); 
} // setUp 

Các kết quả trên "artifactId: null". Dù sao, đánh giá cao sự giúp đỡ nào, - Dave

+0

trùng lặp có thể xảy ra của [Làm thế nào để lấy thuộc tính maven bên trong một thử nghiệm JUnit?] (http://stackoverflow.com/questions/247346/how-to-retrieve-maven-properties-inside-a-junit-test) – approxiblue

Trả lời

5

Nhìn vào số systemPropertyVariables (và bạn bè) để chắc chắn. Nó làm những gì bạn muốn. AFAIK không có cách nào để vượt qua tất cả các thuộc tính maven mà không liệt kê chúng.

9

Thuộc tính dự án Maven không tự động được thêm vào thuộc tính Hệ thống Java. Để đạt được điều đó, có khá nhiều lựa chọn. Đối với nhu cầu cụ thể này, bạn có thể định nghĩa thuộc tính Hệ thống cho maven-surefire-plugin (chạy thử nghiệm) và sau đó sử dụng phương thức System.getProperty.

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-surefire-plugin</artifactId> 
    <version>2.10</version> 
    <configuration> 
     <systemProperties> 
      <property> 
       <name>projectArtifactId</name> 
       <value>${project.artifactId}</value> 
      </property> 
     </systemProperties> 
    </configuration> 
</plugin> 

Cách khác để đạt được tính chất Maven đối với các kiểm tra JUnit có thể là lọc tài nguyên cho tệp nguồn thử nghiệm.

PS. Đọc cấu hình Maven trong thời gian chạy, ngay cả trong các thử nghiệm là IMHO khá bẩn. :)

+1

sử dụng systemPropertyVariables thay vì systemProperties (không được chấp nhận) –

0

Đôi khi, Eclipse được cấu hình để sử dụng Trình tạo Java cho dự án-> Tự động Xây dựng (phải cấp nhấp chuột> Project-> Properties-> Builders)

Nếu như vậy là trường hợp, đôi khi việc lọc nguồn doesn 't làm việc. Bạn có một số tùy chọn:

  1. Cung cấp thuộc tính trong tệp pom.xml như trên.
  2. Cung cấp nộp tài sản và thực hiện nguồn Maven lọc
  3. Sử dụng Maven Invoker

2 và 3 được mô tả trong http://scottizu.wordpress.com/2013/10/16/reading-the-project-version-from-the-maven-pom-file/

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