2012-08-22 25 views
9

Tôi đang ở tham chiếu đến "Maven: The Complete Reference" và đặc biệt là phần nói về những hồ sơ mà tài liệu việc sử dụng một thẻ <properties... trong <profile... thẻ ở đây: see hereSử dụng thẻ khách sạn thuộc maven tiểu

<profile> 
      <id>development</id> 
      <activation> 
       <activeByDefault>true</activeByDefault> 
       <property> 
        <name>environment.type</name> 
        <value>dev</value> 
       </property> 
      </activation> 
      <properties> 
       <database.driverClassName>com.mysql.jdbc.Driver</database.driverClassName> 
       <database.url> 
        jdbc:mysql://localhost:3306/app_dev 
       </database.url> 
       <database.user>development_user</database.user> 
       <database.password>development_password</database.password> 
      </properties> 
     </profile> 

gì tôi không chắc chắn về những gì sẽ xảy ra khi lệnh mvn install -Denvironment.type=dev được điều hành:

  • này sẽ tạo ra một tập tin .properties?
  • Nếu không phải như thế nào và ở đâu sẽ tomcat (ví dụ) đọc các thuộc tính cá nhân khi ứng dụng được thử nghiệm trong dev?
+0

Chỉ cần cố gắng theo chuỗi ở đây thông qua maven và spring và đây chính là câu hỏi và câu trả lời tôi cần! Đẹp nhất! –

Trả lời

17

Điều này có tạo tệp .properties không?

Không, nó sẽ không. Điều này sẽ thiết lập các thuộc tính được sử dụng bởi maven. Điều này là, với mvn install -Denvironment.type=development maven sẽ sử dụng giá trị 'development_user' cho biến 'database.user' (bạn có thể sử dụng như $ {database.user} trong poms và các tài nguyên được lọc).

Nếu không phải như thế nào và ở đâu tomcat (ví dụ) đọc các thuộc tính riêng lẻ khi ứng dụng được thử nghiệm trong dev?

Điều cần nói với maven là lọc (và sửa đổi) tài nguyên mà bạn muốn tùy chỉnh tùy thuộc vào cấu hình (properties.files).

Vì vậy, trước tiên bạn phải nói maven để lọc các nguồn lực:

<build> 
    <resources> 
     <resource> 
      <directory>src/main/resources</directory> 
      <filtering>true</filtering> 
     </resource> 
    </resources> 
</build> 

Sau đó chỉnh sửa tập tin thuộc tính của bạn để sử dụng các biến maven. Ví dụ: tệp thuộc tính db của bạn sẽ trông giống như sau:

database.driverClassName=${database.driverClassName} 
database.url=${database.url} 
#... 
+0

Tôi thấy [tài liệu] (http://maven.apache.org/plugins/maven-resources-plugin/examples/filter.html) hữu ích sau khi đọc câu trả lời này - có vẻ như 'lọc' về cơ bản có nghĩa là con quạ đi qua và thay thế $ {somename} bằng giá trị của nó trên bản dựng ** trong bất kỳ tệp nào **. Bạn có thể thấy điều này trong đầu ra xây dựng. Câu trả lời tuyệt vời - thực sự lấp đầy khoảng trống cho tôi. –

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