0

簡単に言うと、タグの引数がチェックする前にビルドディレクトリが作成されるようにするにはどうすればよいですか? 私はant 1.9.2を使用しています。jarfile<manifestclasspath>

build事前にディレクトリを作成しないと失敗する最小限の例を次に示します。

 <path id="master-classpath">
      <pathelement path="src"/>
      <pathelement location="lib/dom4j-1.6.1.jar"/>
 </path>


 <manifestclasspath property="lib.list" jarfile="build/jar/HelloWorld.jar">
    <classpath refid="master-classpath" />
 </manifestclasspath>


<target name="clean">
    <delete dir="build"/>
</target>


<target name="build">
    <mkdir dir="build/classes"/>
    <javac destdir="build/classes" includeantruntime="false" >
           <src path="src"/>
           <classpath refid="master-classpath"/>
      </javac>
</target>


<target name="jar">
    <mkdir dir="build/jar"/>
    <jar destfile="build/jar/HelloWorld.jar" basedir="build/classes">
        <manifest>
            <attribute name="Main-Class" value="HelloWorld"/>
                <attribute name="Class-Path" value="${lib.list}"/>
        </manifest>
    </jar>
</target>


<target name="run">
    <java jar="build/jar/HelloWorld.jar" fork="true"/>
</target>

もちろん、jar ファイルのディレクトリはビルド ディレクトリです。また、ビルドする前に、ビルド ディレクトリが存在しません。ビルド ディレクトリの各サブディレクトリは、ディレクトリに対する適切な target--call によって作成され、ディレクトリがcompile作成mkdirclassesjarますjar。これはすべてかなり標準的だと思います。

<manifestclasspath>タグは変数に読み込まれるため、タスクの前に読み込まれます。したがって、他のターゲットはまだ実行されていません。また、ディレクトリが見つからないため、ターゲット実行されることはありません。ant を実行する前にディレクトリを手動で作成する必要がありますが、これはbuild/jar非常にばかげています。

buildもちろん、事前にディレクトリを作成することは大したことではありません。しかし、人々が私のソフトウェアを自分でインストールしようとすると、少し難しくなります. とにかく、ビルドする前にビルドは存在しません! 私は何をしているはずですか?

4

1 に答える 1

1

jar ファイルを作成するターゲットで manifestclasspath タスクを使用してみてください。

次の例を参照してください。

于 2013-10-03T22:33:35.737 に答える