我有一個客戶端,服務器和客戶端+服務器構建文件。在這裏,他們是:
Client
Server
Client+Server使用Ant構建後更改類路徑
編輯:只是爲了讓它完全清楚,我有一個問題,現在唯一的文件是Server
。我只包括其他人,以顯示他們如何鏈接,但他們沒有必要看。
我遇到的問題是與服務器。我將所有庫與服務器耳朵捆綁在一起,但是在創建類路徑時,庫的相對位置是../
。我需要這是../../
。如果我在構建路徑時將路徑轉換爲../../
,那麼它無法找到這些庫,因爲它只在構建之後纔在該位置。
我可以以某種方式讓這個ant構建一旦製作jar就改變classpath嗎? (我意識到這是不可能的)
或者有沒有更好的方法來處理這種情況之前,這樣我就可以得到類路徑正確?
根據要求,這裏是我關心的部分。具體來說就是server.package
和server.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>
你打電話給哪個目標? –
請包括您關心的代碼片段。在幾個月內,鏈接將變成404。 –