2012-03-28 40 views
16

Tôi có một tập tin bất động sản như sauMaven - Đọc một tài sản từ một thuộc tính bên ngoài tập tin

junit.version=3.8.1 
dbcp.version=5.5.27 
oracle.jdbc.version=10.2.0.2.0 

Tôi cố gắng đọc những thuộc tính từ tập tin pom của tôi như hình dưới đây

<dependency> 
    <groupId>junit</groupId> 
    <artifactId>junit</artifactId> 
    <version>${junit.version}</version> 
    <scope>test</scope> 
</dependency> 


<dependency> 
    <groupId>dbcp</groupId> 
    <artifactId>dbcp</artifactId> 
    <version>${dbcp.version}</version> 
    <scope>provided</scope> 
</dependency> 
<dependency> 
    <groupId>com.oracle</groupId> 
    <artifactId>ojdbc14</artifactId> 
    <version>${oracle.jdbc.version}</version> 
    <scope>provided</scope> 
</dependency> 

và cấu hình plugin

<plugin> 
     <groupId>org.codehaus.mojo</groupId> 
     <artifactId>properties-maven-plugin</artifactId> 
     <executions> 
      <!-- Associate the read-project-properties goal with the initialize phase, to read the properties file. --> 
      <execution> 
      <phase>initialize</phase> 
      <goals> 
       <goal>read-project-properties</goal> 
      </goals> 
      <configuration> 
       <files> 
       <file>../live.properties</file> 
       </files> 
      </configuration> 
      </execution> 
     </executions> 
     </plugin> 

Tôi thấy rằng khi tôi chạy cài đặt sạch sẽ không tìm thấy thuộc tính, thay vào đó nó sẽ xuất hiện các lỗi sau:

'dependencies.dependency.version' for junit:junit:jar must be a valid version but is '${junit.version}'. @ line 23, column 16 
'dependencies.dependency.version' for dbcp:dbcp:jar must be a valid version but is '${dbcp.version}'. @ line 31, column 12 
'dependencies.dependency.version' for com.oracle:ojdbc14:jar must be a valid version but is '${oracle.jdbc.version}'. @ line 37, column 13 

Các lỗi trên có vẻ như trong trường hợp tôi đề cập đến thuộc tính khi tôi khai báo sự phụ thuộc. Tôi thấy rằng trong một số trường hợp khác, tài sản được đọc từ tệp. Ví dụ: nó hoạt động nếu tôi sử dụng thuộc tính trên thẻ phiên bản dự án (không phải phiên bản phụ thuộc)

Dường như thuộc tính không được đọc từ tệp nếu được nhắc từ khai báo phụ thuộc nhưng được đọc nếu được gọi từ bất cứ nơi nào khác. Bất kỳ ý tưởng?

+0

điểm của việc có những phiên bản trong một tệp riêng là gì? – artbristol

+0

Tôi đang chia sẻ tệp thuộc tính đó với một dự án khác tạo lớp phủ chiến tranh bằng các phiên bản. – ziggy

Trả lời

12

Pha initialize không phải là một phần của clean lifecycle. Bạn cũng cần phải liên kết plugin thuộc tính của mình với giai đoạn pre-clean.

Tuy nhiên, độ phân giải phụ thuộc sẽ chạy trước khi giải quyết và thực thi các plugin khác, do đó cách tiếp cận của bạn sẽ không hoạt động.

Cách thích hợp để giải quyết vấn đề đó là di chuyển các phiên bản phụ thuộc vào tệp pom.xml gốc và sử dụng cùng một phần cha mẹ trong cả hai dự án của bạn.

+0

Giai đoạn nào tôi nên sử dụng để đảm bảo rằng các thuộc tính được tải được coi là lệnh mvn? – ziggy

+0

Tôi đã trả lời. Lệnh mvn clean đang sử dụng vòng đời khác nhau có các pha hoàn toàn khác nhau từ vòng đời mặc định (ví dụ: gói mvn hoặc mvn install). Vui lòng theo liên kết đến tài liệu từ câu trả lời của tôi. –

+0

Bạn có ý nghĩa như thế này không? làm sạch trước, khởi tạo ziggy

1

u có thể định nghĩa như thế này:

<plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>properties-maven-plugin</artifactId> 
      <version>1.0-alpha-2</version> 
      <executions> 
       <execution> 
       <id>pre-clean-config</id> 
        <phase>pre-clean</phase> 
        <goals> 
         <goal>read-project-properties</goal> 
        </goals> 
        <configuration> 
         <files> 
          <file>config.properties</file> 
         </files> 
        </configuration> 
       </execution> 
       <execution> 
       <id>initialize-config</id> 
        <phase>initialize</phase> 
        <goals> 
         <goal>read-project-properties</goal> 
        </goals> 
        <configuration> 
         <files> 
          <file>config.properties</file> 
         </files> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 
Các vấn đề liên quan