1

Ant ビルド スクリプトを使用して jar バンドルを作成しています。問題は、生成された .jar ファイルに .class ファイルが含まれていないことです。jar を作成する際に {build.dest} も試しましたが、効果はありませんでした。

残りの必要なファイルはすべて .jar ファイルにあります。

ここに私のビルドスクリプトがあります

<?xml version="1.0"?>

<project name="TaskNodeBundle" default="all" basedir=".">
    <!-- Sets variables which can later be used. -->
    <!-- The value of a property is accessed via ${} -->
    <property name="bundlename" value="task-node-bundle" />
    <property name="src.dir" location="../src" />
    <property name="lib.dir" location="../lib" />
    <property name="build.dir" location="/buildoutput" />
    <property name="build.dest" location="../build/dest" />


    <!--
        Create a classpath container which can be later used in the ant task
    -->
    <path id="classpath">
        <fileset dir="${lib.dir}/">
            <include name="*.jar" />
        </fileset>
    </path>

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

    <!-- Deletes the existing build directory -->
    <target name="mkdir" depends="clean">
        <mkdir dir="${build.dest}"/>
    </target>


    <!-- Compiles the java code -->
    <target name="compile" depends="mkdir">
        <javac srcdir="${src.dir}" destdir="${build.dest}" classpathref="classpath" />
    </target>

    <target name="package-bundle" depends="compile" description="Generates the bundle" >
        <jar destfile="${build.dest}/${bundlename}.jar" manifest="${src.dir}/META-INF/MANIFEST.MF">
            <fileset dir="${src.dir}">
                <include name="**/**.class" />
                <include name="**/**.properties"/>
                <include name="/META-INF/**.*" />
                <include name="/META-INF/spring/**.*" />
            </fileset>
        </jar>
    </target>

    <target name="all" depends="package-bundle">
    </target>

</project>
4

1 に答える 1

3

まず、「瓶を作る際に{build.dest}を試した」とはどういう意味ですか?

いずれにせよ、ビルドのこの部分を確認する必要があります。

<jar destfile="${build.dest}/${bundlename}.jar" manifest="${src.dir}/META-INF/MANIFEST.MF">
    <fileset dir="${src.dir}">
        <include name="**/**.class" />
        <include name="**/**.properties"/>
        <include name="/META-INF/**.*" />
        <include name="/META-INF/spring/**.*" />
    </fileset>
</jar>
  1. コンパイルしたクラスファイルはにあるので、タスク${build.dest}のネストされたルートディレクトリとして${build.dest}を使用する必要があります。しかし今、あなたはあなたのソースコードフォルダを指しています。<fileset><jar><fileset>
  2. 生成されたjarファイルをクラスファイルと同じディレクトリに配置することは避けてください。たとえば、jarファイルを別のディレクトリである${dist.dir}に配置できます。

だからこれを試してみてください:

あなたはプロパティを持っています:

<property name="dist.dir" value="../build/dist" />

その後、

<jar destfile="${dist.dir}/${bundlename}.jar" manifest="${src.dir}/META-INF/MANIFEST.MF">
    <fileset dir="${build.dest}">
        <include name="**/*.class" />
    </fileset>
    <fileset dir="${src.dir}">
        <include name="**/*.properties"/>
        <include name="/META-INF/**/*.*" />
        <include name="/META-INF/spring/**/*.*" />
    </fileset>
</jar>
于 2012-09-10T08:04:04.460 に答える