2013-01-09 41 views
6

Hiện nay, tôi biết làm thế nào để làm điều này loại lọc sử dụng Maven:Maven-thuộc tính-lọc giống như cho chú thích Java?

pom.xml

<properties> 
    <foo>bar</foo> 
</properties> 

app.properties

foo=${foo} 

Nhưng là nó có thể làm loại lọc đó, sử dụng Maven, Spring hay bất kỳ công cụ nào khác?

MyClass.java

@MyAnnotation("${foo}") // ${foo} should get replaced at compile time 
public void getData() { 
    return data; 
} 
+0

bạn có thể sử dụng lọc tài nguyên maven trên tệp nguồn của bạn ở giai đoạn tạo nguồn - đặt tệp * .java của bạn dưới một số thư mục không nguồn (tốt hơn không sử dụng/tài nguyên) và trong giai đoạn đó sao chép chúng sang thư mục nguồn – radai

+0

Điều này có nghĩa là chú thích của bạn sẽ phải có chính sách lưu giữ 'SOURCE' cho một. Và bạn muốn vá mã nguồn để khởi động? Chúc may mắn: p – fge

Trả lời

7

Bạn đã cố gắng sử dụng một thực hiện của các plugin tài nguyên. Bạn có thể trỏ nó vào nguồn Java của bạn và sử dụng bộ lọc thông thường của nó, theo như tôi biết.

http://maven.apache.org/plugins/maven-resources-plugin/examples/filter.html

<properties> 
    <my.name>chad</my.name> 
    <java.property>//comment</java.property> 
    </properties> 

    <build> 
    <sourceDirectory>target/processed-source/java</sourceDirectory> 
    <resources> 
     <resource> 
      <directory>src/main/resources</directory> 
      <filtering>true</filtering> 
     </resource> 

     <resource> 
      <directory>src/main/java</directory> 
      <filtering>true</filtering> 
      <targetPath>../processed-source/java</targetPath> 
     </resource> 
    </resources> 

    </build> 

Vì vậy, điều đầu tiên là bạn đường nguồn java chế biến thành một thư mục đặc biệt trong thư mục đích. Tiếp theo, bạn phải cấu hình lại plugin trình biên dịch để không biên dịch nguồn chưa được lọc, và thay vào đó, biên dịch nguồn mới. Lưu ý, như với tất cả những điều maven, bạn có thể cấu hình nhiều hơn thế này.

Điều này blog entry hữu ích.

+0

Cảm ơn bạn đã trả lời, nhưng tôi không thể làm cho nó hoạt động, ngay cả khi tôi chỉ định thuộc tính 'targetPath' Maven. Trong thực tế, tôi chưa bao giờ thử sử dụng các tệp nguồn * .java, bạn có ví dụ nào không? – sp00m

+0

Nó hoạt động;) Tôi sẽ thêm cấu hình của mình. – chad

+0

Tuyệt vời, cảm ơn! – sp00m

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