2009-05-21 5 views
1

jarファイルをbulidするという、1つの非常に単純なantスクリプトを作りたいと思います。しかし、私が非常に簡単な例を使用しようとすると、ソースが依存するjarファイルに依存するために失敗します。では、Antターゲットを作成する際にクラスパスに置く必要のあるjarファイルがあることをJarファイルで指定する方法を説明します。Antスクリプトの例

<project name="project" default="default"> 
<property name="src.dir"  value="src"/> 
<property name="build.dir" value="build"/> 
<property name="classes.dir" value="${build.dir}/classes"/> 
<property name="jar.dir"  value="${build.dir}/jar"/> 
<property name="lib.dir"  value="//tomcat/common/lib"/> 
<description> description </description> 

<!-- ================================= 
     target: default    
    ================================= --> 
<target name="default" depends="compile" description="description"> 
    <jar destfile="/path/to/dir/Library.jar"> 

    </jar> 
</target> 
    <target name="compile"> 
     <mkdir dir="${classes.dir}"/> 
     <javac srcdir="${src.dir}" destdir="${classes.dir}"/> 
    </target> 

</project> 
+0

あなたが例を投稿することができますか? ant Jarタスク自体が依存関係に失敗してはいけません。おそらく、あなたのビルドファイルもjarを作成する前にsrcをコンパイルしています。そのような場合は、classpath属性を指定する必要があります。 –

+0

これで、クラスパス属性が欠けているjavacタスクが問題であることがわかります。 –

答えて

1

あなただけのjavac内のlibsを置くことができます。

<javac srcdir="${src.dir}" destdir="${classes.dir}"> 
    <classpath> 
     <pathelement location="${lib.dir}/lib1.jar"/> 
     <pathelement location="${lib.dir}/lib2.jar"/> 
    </classpath> 
</javac> 
0

ここでは、タイムラインのopensourceプロジェクトを構築するために使用するantファイルを示します。それはかなりストレートです。 jarファイルは作成されませんが、JSファイルを最小限に抑えるためにライブラリが使用されます。

http://simile-widgets.googlecode.com/svn/timeline/trunk/build.xml

ラリー

3

あなたの質問は完全には明らかではない - 私はあなたが、その後とjavacタスクに)あなたのソースをコンパイルした結果からjarファイルを構築したいわけ疑い。そうでない場合は、ソースの依存関係がどこに入るのか分かりません。そのの場合、jarタスクは関係ありません。

javacタスクでは、classpath属性を使用して他のjar依存関係を指定します。

+0

私はjavacタスクを見て、それが役立つかどうかを見ていきます。 – Milhous

+0

結局、これは良い推測でした –

3

ここには、Eclipse Runnable JAR Export Wizardを使用して生成されたANTスクリプトがあります。これは、いくつかの友人と小さなファンタジー野球リーグのGoogleスプレッドシート上の統計を更新するプロジェクトです。それはESPN.comのプレーヤーページを掻き集めることによって統計を取得します。

manifest要素内のクラスパス属性は、jarによって使用されるクラスパスを設定するために使用されます。これはデフォルトの "。"しかし、私はsrcパスを明示的に追加して、log4jがlog4j.propertiesを受け取るようにしなければなりませんでした。

zipfileset要素は、自分のjarファイルに含めたい外部ソース用のjarファイルです。私はこれがあなたが探しているものかもしれないと思う。

<?xml version="1.0" encoding="UTF-8" standalone="no"?> 
<project default="create_run_jar" name="Create Runnable Jar for Project cob_fantasy_baseball"> 
    <!--this file was created by Eclipse Runnable JAR Export Wizard--> 
    <!--ANT 1.7 is required          --> 
    <target name="create_run_jar"> 
     <jar destfile="C:/workspace/cob_fantasy_baseball/cob_fantasy_baseball.jar" filesetmanifest="mergewithoutmain"> 
      <manifest> 
       <attribute name="Built-By" value="${user.name}"/> 
       <attribute name="Main-Class" value="com.me.cob_fantasy_baseball.UpdateCobStats"/> 
       <attribute name="Class-Path" value=".;src/com/me/cob_fantasy_baseball"/> 
      </manifest> 
      <fileset dir="C:/workspace/cob_fantasy_baseball/classes"/> 
      <zipfileset excludes="META-INF/*.SF" src="C:/workspace/gdata/java/lib/gdata-core-1.0.jar"/> 
      <zipfileset excludes="META-INF/*.SF" src="C:/workspace/gdata/java/lib/gdata-spreadsheet-2.0.jar"/> 
      <zipfileset excludes="META-INF/*.SF" src="C:/workspace/jericho-html-2.6/lib/jericho-html-2.6.jar"/> 
      <zipfileset excludes="META-INF/*.SF" src="C:/workspace/apache-log4j-1.2.15/log4j-1.2.15.jar"/> 
      <zipfileset excludes="META-INF/*.SF" src="C:/workspace/jaf-1.1.1/activation.jar"/> 
      <zipfileset excludes="META-INF/*.SF" src="C:/workspace/javamail-1.4.2/mail.jar"/> 
      <zipfileset excludes="META-INF/*.SF" src="C:/workspace/javamail-1.4.2/lib/smtp.jar"/> 
      <fileset dir="C:/workspace/cob_fantasy_baseball/src/com/me/cob_fantasy_baseball"/> 
     </jar> 
    </target> 
</project> 

はまた、ここでのjarタスクのAntのドキュメントへのリンクです:あなたの例に基づいてhttp://ant.apache.org/manual/Tasks/jar.html

関連する問題