2010-06-08 15 views
19

Đây là những gì một phần của ivy.xml của tôi trông giống như ngay bây giờ:Tôi có thể sử dụng các thuộc tính trong tệp ivy.xml để tránh lặp lại số phiên bản phụ thuộc không?

<dependency org="org.springframework" name="org.springframework.core" rev="3.0.2.RELEASE" /> 
<dependency org="org.springframework" name="org.springframework.context" rev="3.0.2.RELEASE" /> 
<dependency org="org.springframework" name="org.springframework.jdbc" rev="3.0.2.RELEASE" /> 
<dependency org="org.springframework" name="org.springframework.beans" rev="3.0.2.RELEASE" /> 
<dependency org="org.springframework" name="org.springframework.jms" rev="3.0.2.RELEASE" /> 

Dưới đây là những gì tôi muốn nó trông giống như:

<dependency org="org.springframework" name="org.springframework.core" rev="${spring.version}" /> 
<dependency org="org.springframework" name="org.springframework.context" rev="${spring.version}" /> 
<dependency org="org.springframework" name="org.springframework.jdbc" rev="${spring.version}" /> 
<dependency org="org.springframework" name="org.springframework.beans" rev="${spring.version}" /> 
<dependency org="org.springframework" name="org.springframework.jms" rev="${spring.version}" /> 

Đây có phải là có thể? Cú pháp là gì?

Trả lời

26

tôi đã kết thúc sử dụng các đối tượng XML để làm sự thay thế. Điều này giữ mọi thứ trong cùng một tệp, điều quan trọng đối với trường hợp sử dụng của tôi.

<?xml version="1.0"?> 
<!DOCTYPE ivy-module [ 
    <!ENTITY spring.version "3.0.2.RELEASE"> 
]> 
<ivy-module version="2.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:noNamespaceSchemaLocation="http://incubator.apache.org/ivy/schemas/ivy.xsd"> 

    <info organisation="org" module="mod"/> 

    <dependencies> 
     <dependency org="org.springframework" name="org.springframework.core" rev="&spring.version;" /> 
     <dependency org="org.springframework" name="org.springframework.context" rev="&spring.version;" /> 
     <dependency org="org.springframework" name="org.springframework.jdbc" rev="&spring.version;" /> 
     <dependency org="org.springframework" name="org.springframework.beans" rev="&spring.version;" /> 
     <dependency org="org.springframework" name="org.springframework.jms" rev="&spring.version;" /> 
    </dependencies> 
</ivy-module> 
+8

+1 Nice lateral thinking – skaffman

+1

Sử dụng tuyệt vời các thực thể XML. Rất hữu ích thực sự. – Vikas

13

Cú pháp là chính xác. Tất cả những gì bạn cần làm là thiết lập thuộc tính ANT ở đâu đó.

Ví dụ

ant -Dspring.version=3.0.2.RELEASE 

Một lựa chọn khác là thêm việc kê khai tài sản vào ivysettings.xml tập tin

<ivysettings> 

    <property name="spring.version" value="3.0.2.RELEASE"/> 

    <settings defaultResolver="maven2"/> 
    <resolvers> 
     <ibiblio name="maven2" m2compatible="true"/> 
    </resolvers> 
</ivysettings> 
+2

Cool! Có thể thiết lập thuộc tính bên trong 'ivy.xml' không? Bằng cách đó tất cả các thông tin phụ thuộc sẽ được với nhau. –

+0

Đặt tuyên bố tài sản trong tệp cài đặt ivy đạt được cùng một mục tiêu giữ thông tin phụ thuộc cùng nhau –

+2

Cảm ơn câu trả lời, nhưng tôi đã đi với giải pháp của tôi (http://stackoverflow.com/questions/2996048/can-i-use -properties-in-an-ivy-xml-file-to-tránh-lặp-phiên bản-số-of-dep/3091114 # 3091114) vì tôi muốn giữ các khai báo phiên bản trong cùng một tệp. –

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