2012-02-15 37 views
9

Tôi biết điều này có lẽ là một câu hỏi ngớ ngẩn nhưng tôi không thể tìm ra nó cho cuộc sống của tôi. Về cơ bản tôi đang sử dụng maven để thiết lập tên người dùng dataSource, mật khẩu và tên lớp trình điều khiển của tôi. Khi tôi xem tệp Pom.xml hiệu quả, tất cả đều xuất hiện như sau:Chuyển thuộc tính maven vào mùa xuân

<dataSource.driverClassName>oracle.jdbc.driver.OracleDriver</dataSource.driverClassName> 
<dataSource.username>someUsername</dataSource.username> 
<dataSource.password>somePassword</dataSource.password> 

Tôi đang cố sử dụng thông tin này khi khai báo nguồn dữ liệu mùa xuân. Mã xuất hiện như sau.

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> 
    <property name="driverClassName" value="${dataSource.driverClassName}"/> 
    <property name="url" value="${dataSource.url}"/> 
    <property name="username" value="${dataSource.username}"/> 
    <property name="password" value="${dataSource.password}"/> 
</bean> 

sau đó tôi vượt qua nguồn dữ liệu vào một JdbcTemplate nhưng khi tôi sử dụng mẫu để chạy các câu lệnh sql trong mã của tôi, tôi nhận được một lỗi nói rằng không có tài xế với tên $ {dataSource.driverClassName} có thể được tìm thấy. Điều này rõ ràng là do hằng số chuỗi được truyền chứ không phải biến. Tôi đang thiếu gì?

Cảm ơn

+0

Cảm ơn tất cả sự giúp đỡ. Có vẻ như PropertyConfigurationPlaceholder là thứ tôi đang tìm kiếm. –

Trả lời

2

Maven không thể chuyển bất kỳ dữ liệu vào ứng dụng, vì maven làm việc tại thời gian biên dịch và tham số một đánh giá tại thời gian chạy.

Nhưng bạn có thể sử dụng bộ lọc maven. Để thay thế một số điểm đánh dấu bằng các giá trị trong khi maven đang xử lý tài nguyên.

+0

Tôi đồng ý với câu trả lời này. Sử dụng tính năng lọc maven cập nhật các giá trị trong các tệp cấu hình mùa xuân tại thời gian xây dựng, do đó có các giá trị chính xác tại thời gian chạy. Xem http://stackoverflow.com/questions/3886753/access-maven-project-version-in-spring-config-files – Noremac

3

Tôi nghĩ rằng bạn không thể thực hiện theo cách đó, ý tôi là, từ pom.xml đến ngữ cảnh ứng dụng mùa xuân xml.

Đặt tính của bạn trong một tập tin bất động sản, một cái gì đó như:

dataSource.username=${dataSource.username} 
dataSource.driverClassName=${dataSource.driverClassName} 
dataSource.username=${dataSource.username} 
dataSource.password=${dataSource.password} 

Sau đó, sử PropertyConfigurationPlaceholder để tải các tập tin bất động sản và làm cho tính chất availables vào mùa xuân tập tin bối cảnh applicationt.

6

Cách tốt nhất là để cấu hình các plugin Tài Maven:

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

Ví dụ, bạn cần xác định trong pom.xml của bạn (bên trong xây dựng từ khóa):

<resources> 
    <resource> 
     <directory>src/main/resources</directory> 
     <filtering>true</filtering> 
     <includes> 
      <include>**/*file_with_properties.xml</include> 
     </includes> 
    </resource> 
</resources> 

đâu "**/* file_with_properties.xml" là các tệp của bạn nơi bạn sử dụng các thuộc tính của mình (ví dụ: $ {dataSource.username}).

Bên cạnh đó, bạn có thể xác định loại trừ: <excludes>**/*other_files.xml</excludes>

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