2012-04-18 28 views
6

Tôi đang tạo một cái bình với Ant cũng sử dụng tệp kê khai tùy chỉnh. Tệp build.xml xây dựng mọi thứ đúng cách. Tuy nhiên, khi tôi kiểm tra tệp kê khai trong bình, thuộc tính của tôi không có ở đó. Có vẻ như nó đang được thay thế bằng tệp MANIFEST.MF mặc định do Ant tạo. xây dựng tập tin của tôi là dưới đây:Ant ghi đè tệp kê khai tùy chỉnh

<?xml version="1.0" ?> 

<property name="src" location="src" /> 
<property name="build" location="build" /> 
<property name="dist" location="dist" /> 

<target name="clean"> 
    <delete dir="${build}" /> 
    <delete dir="${dist}" /> 
</target> 

<target name="main" depends="compile, dist, build"> 
    <echo> 
     Building the .jar file. 
    </echo> 
</target> 

<target name="build"> 
    <mkdir dir="${build}" /> 
    <mkdir dir="${build}/META-INF" /> 
</target> 

<target name="compile" depends="build"> 
    <javac srcdir="${src}" destdir="${build}"/> 
</target> 

<target name="dist" depends="compile"> 
    <mkdir dir="${dist}/lib" /> 
    <manifest file="${build}/META-INF/MANIFEST.MF"> 
     <attribute name="Class-Path" value="MyGame.jar" /> 
     <attribute name="Main-Class" value="game.Game"/>  
    </manifest> 

    <jar jarfile="${dist}/lib/MyGame.jar" basedir="${build}" /> 

</target> 

gì làm tôi phải thay đổi để xác định biểu hiện tùy chỉnh thay vì mặc định tập tin Ant MANIFEST.MF?

+0

Đưa nhiều thuộc tính trong thẻ sẽ giúp –

Trả lời

8

Tôi tin rằng tác vụ jar kiến ​​có thuộc tính tệp kê khai nơi bạn có thể chỉ định tệp thực tế cần sử dụng. Trong trường hợp này bạn nên tham khảo các tập tin mà bạn đã tạo với nhiệm vụ manifest

http://ant.apache.org/manual/Tasks/jar.html

<target name="dist" depends="compile"> 

    <mkdir dir="${dist}/lib" /> 

    <manifest file="${build}/META-INF/MANIFEST.MF"> 
     <attribute name="Class-Path" value="MyGame.jar" /> 
     <attribute name="Main-Class" value="game.Game"/> 
    </manifest> 

    <jar manifest="${build}/META-INF/MANIFEST.MF" jarfile="${dist}/lib/MyGame.jar" basedir="${build}" /> 

</target> 
+1

tôi nhớ da diết những "biểu hiện" thuộc tính khi xác định jar. Cảm ơn! – Jason

+2

Điểm mấu chốt là bạn không thể chỉ tạo một tệp MANIFEST.MF như các tệp khác, nó sẽ bị bỏ qua bởi ant. Thay vào đó, bạn CÓ sử dụng thuộc tính 'tệp kê khai' hoặc trực tiếp phần tử lồng nhau . –

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