2012-10-26 2 views
0

클라이언트, 서버 및 클라이언트 + 서버 빌드 파일이 있습니다. 여기에 그들이 :
Client
Server
Client+ServerAnt를 사용한 빌드 후 클래스 경로 변경

편집이 : 그냥 완전히 명확하게하기 위해, 내가 지금에 문제가 있어요 유일한 파일은 Server입니다. 나는 그들이 어떻게 연결되어 있는지 보여주기 위해 다른 사람들을 포함 시켰지만, 그들은 볼 필요가 없다.

문제는 서버에 있습니다. 나는 모든 라이브러리를 서버 귀와 번들링하고 있지만 classpath가 만들어지면 라이브러리의 상대 위치는 ../입니다. 나는 ../../이 필요합니다. 클래스 경로를 ../../으로 pathconvert 한 빌드를 수행하면 빌드가 끝날 때까지 그 위치에 있지 않기 때문에 라이브러리를 찾을 수 없습니다.

항아리가 만들어지면이 앤트 빌드를 클래스 패스로 변경할 수 있습니까? (나는 이것이 가능하지 않다는 것을 깨닫는다.)

또는 클래스 패스를 얻을 수 있도록 빌드하기 전에 이것을 처리하는 더 좋은 방법이 있습니까?

요청에 따라 여기에 제가 우려하고있는 부분이 있습니다. 특히 server.packageserver.app_package 타겟. 라이브러리는 귀에 번들로 제공됩니다. 따라서 클래스 패스는 ../../이어야합니다.

<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> 
+0

당신은 어떤 순서로 전화를 걸고 있습니까? –

+0

문제의 코드 조각을 포함하십시오. 몇 달 후에 링크가 404가됩니다. –

답변

0

귀하의 문제는 귀하의 아래 첨자를 client+server으로 가져 오는 것입니다.

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

그렇게해서는 안됩니다. 별도의 빌드 파일에서 타겟을 실행하려면

+0

'server' ant 파일에서 문제가 발생했습니다. 'client + server' 앤트 파일이 아닙니다. 미안해 내가 더 분명히 했어야했다. 실제로 내가'client'와'client + server' 앤트 파일을 포함시킬 이유는 없었습니다. – Graham

0

나는 java webstart를 사용한다는 것을 잊어 버렸습니다. 매니페스트에 라이브러리가 전혀 필요하지 않습니다. 웹 스타트의 jnlp 파일에 있어야합니다.

관련 문제