0

クライアント、サーバー、およびクライアント + サーバーのビルド ファイルがあります。クライアントサーバー
クライアント+サーバー

編集:完全に明確にするために、私が現在問題を抱えている唯一のファイルはServer. 他のものは、それらがどのようにリンクされているかを示すためにのみ含めましたが、見る必要はありません.

私が抱えている問題はサーバーにあります。すべてのライブラリをサーバーイヤーにバンドルしていますが、クラスパスを作成すると、ライブラリの相対位置は../. 私はこれが必要../../です。クラスパスを に pathconvert するビルドを行うと、ビルド../../後までライブラリがその場所にないため、ライブラリを見つけることができません。

jarが作成されたら、どうにかしてこのantビルドにクラスパスを変更させることはできますか? (可能性は低いと認識しています)

または、クラスパスを正しく取得できるように、ビルド前にこれを処理するより良い方法はありますか?

リクエストにより、ここが私が気になる部分です。具体的にはserver.packageserver.app_packageターゲット。ライブラリは ear にバンドルされています。したがって、それらを取得するには、クラスパスを にする必要があります../../

  <project name="GPServer" default="dist" basedir=".">
    <description>

    </description>
  <!-- set global properties for this build -->
  <dirname property="server.basedir" file="${ant.file.GPServer}"/>
  <property name="server.src" location="${server.basedir}/src"/>
  <property name="server.build" location="${server.basedir}/build"/>
  <property name="server.dist"  location="${server.basedir}/dist"/>
  <property name="server.lib"  location="${server.basedir}/lib"/>
  <property name="deploy.location"  location="${server.basedir}/../../jboss-as-7.1.1.Final/standalone/deployments"/>
  <property name="jboss.lib" location="${server.basedir}/../../jboss-as-7.1.1.Final/standalone/lib"/>

    <path id="server.class.path">
      <!-- <fileset dir="${server.basedir}/lib">
          <include name="*.jar"/>
      </fileset> -->
      <fileset dir="${server.lib}">
          <include name="*.jar"/>
      </fileset>
      <fileset dir="${server.basedir}">
          <include name="*.properties"/>
      </fileset>
    </path>

    <pathconvert property="server.modified.class.path" refid="server.class.path">
        <globmapper from="../*" to="../../*" />
    </pathconvert>

    <path id="final.server.classpath">
        <pathelement path="${server.modified.class.path}"/>
    </path>


  <target name="server.init">
    <!-- Create the time stamp -->
    <tstamp/>
    <!-- Create the build directory structure used by compile -->
    <mkdir dir="${server.build}"/>
    <mkdir dir="${server.dist}"/>
  </target>

  <target name="server.compile" depends="server.init" description="compile the source " >
    <!-- Compile the java code from ${src} into ${dist} -->
    <javac srcdir="${server.src}" destdir="${server.dist}" >
        <classpath>
            <path refid="final.server.classpath"/>
        </classpath>
    </javac>
  </target>

  <target name="server.package" depends="server.compile" description="create the jar" >
        <manifestclasspath property="manifest.path" jarfile="${server.dist}/GrahamsProjServer.jar">
            <classpath refid="final.server.classpath"/>
        </manifestclasspath>
        <jar destfile="${server.dist}/GrahamsProjServer.jar" basedir="${server.dist}" excludes="*.jar">
            <manifest>
                <attribute name="Class-Path" value="${manifest.path}"/>
            </manifest>
        </jar>
  </target>

  <target name="server.app_package" depends="server.package" description="create the jar" >
    <ear destfile="${server.dist}/GrahamsProjServer.ear" appxml="${server.basedir}/META-INF/application.xml" >
        <metainf dir="${server.basedir}/META-INF"/>
        <fileset dir="${server.dist}" includes="*.jar"/>
        <fileset dir="${server.basedir}" includes="lib/*.jar" />
    </ear>
  </target>

  <target name="server.deploy" depends="server.package" description="generate the distribution" >
    <!-- Create the distribution directory -->
    <ear destfile="${deploy.location}/GrahamsProjServer.ear" appxml="${server.basedir}/META-INF/application.xml" >
        <metainf dir="${server.basedir}/META-INF"/>
        <fileset dir="${server.dist}" includes="*.jar"/>
        <fileset dir="${server.basedir}" includes="lib/*.jar" />
    </ear>
  </target>



  <target name="server.clean"
        description="clean up" >
    <!-- Delete the ${build} and ${dist} directory trees -->
    <delete dir="${server.build}"/>
    <delete dir="${server.dist}"/>
    <echo message="Deleting files in ${deploy.location}"/>
    <delete>
        <fileset dir="${deploy.location}" excludes="*.txt"/>
    </delete>
  </target>

</project>
4

2 に答える 2

0

あなたの問題は、あなたの添字を で IMPORT することですclient+server

<!-- ============================================= -->
<!--       Import Server/Client Build Files        -->
<!-- ============================================= -->
<import file="${basedir}/../GrahamsProjClient/build-client.xml"/>
<import file="${basedir}/../GrahamsProjServer/build-server.xml"/>

あなたはそれをすべきではありません。別のビルド ファイルでターゲットを実行する場合は、そのため<ant>のタスクを使用します -> http://ant.apache.org/manual/Tasks/ant.html

于 2012-10-26T15:50:54.797 に答える
0

Java webstart を使用していることを忘れていました。マニフェストにライブラリを含める必要はまったくありません。これらは、webstart の jnlp ファイルに存在するだけで済みます。

于 2012-10-30T22:07:57.627 に答える