2012-04-11 28 views
5

Tôi đang cố gắng để thêm giá trị tùy chỉnh trong pom.properties tập tin mà Maven tạo ở vị trí META-INF/maven/${groupId}/${artifactId}Giá trị tuỳ chỉnh trong pom.properties Maven nộp

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-jar-plugin</artifactId> 
    <version>2.4</version> 
    <configuration> 
      <archive> 
       <manifestEntries> 
        <build>${BUILD_TAG}</build> 
       </manifestEntries> 
       <addMavenDescriptor>true</addMavenDescriptor> 
       <pomPropertiesFile>${project.build.directory}\interface.properties</pomPropertiesFile> 
      </archive> 
    </configuration> 
</plugin> 

Nội dung của các tập tin interface.properties là

# Build Properties 
buildId=746 

Sử dụng documentation tôi đã chỉ các yếu tố pomPropertiesFile đến một thuộc tính bên ngoài, nhưng các tập tin pom.properties tạo vẫn có nội dung mặc định sau khi chạy mvn install

Việc sử dụng chính xác yếu tố pomPropertiesFile là gì?

EDIT

Tôi tin rằng vấn đề nằm ở org.apache.maven.archiver.PomPropertiesUtil. Nếu bạn nhìn vào phương thức sameContents trong source, nó trả về true nếu các thuộc tính trong tệp bên ngoài giống như mặc định và sai nếu khác nhau. Nếu kết quả của sameContents là sai, thì nội dung của tệp bên ngoài sẽ bị bỏ qua.

đủ Chắc chắn, điều này đã được logged như một lỗi

+0

Giao diện 'interface.properties' trông như thế nào? –

+0

Đó là tệp thuộc tính tiêu chuẩn. – Pram

+0

Không sử dụng "\" trong Maven pom's. sử dụng "/" để thay thế. – khmarbaise

Trả lời

0

Tôi nghĩ rằng bạn cần phải đặt một tập tin dưới src/main/nguồn/META-INF/$ {groupId}/$ {artifactId}/giao diện. các thuộc tính và để cho maven thực hiện công việc lọc (cấu hình bộ lọc). Tệp sẽ tự động được sao chép vào mục tiêu/META-INF/maven/$ {groupId}/$ {artifactId}/vị trí.

+1

Tệp này được tạo động trong quá trình xây dựng vì vậy tôi không nghĩ rằng việc đặt nó trong cây nguồn là thực hành tốt. – Pram

0

Xem https://issues.apache.org/jira/browse/MNG-4998

Maven 3 sẽ giải quyết placeholders sở hữu háo hức khi đọc pom.xml cho tất cả các giá trị thuộc tính có sẵn tại thời điểm này. Việc sửa đổi các thuộc tính này sau này sẽ không ảnh hưởng đến các giá trị đã được giải quyết trong tệp pom.xml.

Tuy nhiên, nếu giá trị thuộc tính không khả dụng (không có giá trị mặc định), thì trình giữ chỗ sẽ không được thay thế bằng giá trị và nó vẫn có thể được xử lý sau đó như một trình giữ chỗ. Ví dụ: nếu một plugin sẽ tạo một số thuộc tính trong quá trình xây dựng hoặc nếu trình giữ chỗ được đọc và xử lý bởi plugin trong một số bước xây dựng.