2013-05-20 46 views
1

我有一個部署戰爭文件的Web項目,現在我可以在Windows中部署到Glassfish。這是我的build.xml的必要部分。通過Java中的ANT爲所有平臺部署Web項目到Glassfish

<target 
    name="deploywar" 
    description="Varolan WAR dosyasını yayınlar." > 
    <echo level="info" > 
     Proje sunucuda yayinlaniyor... 
    </echo> 
    <exec 
     executable="cmd" 
     failonerror="true" 
     output="${out.txt}" > 
     <arg value="/c" /> 
     <arg value="${glassfish.path}/glassfish/bin/asadmin --passwordfile ${password.file} deploy --contextroot /GlassfishDeployment ${deployyolu}/${war.filename}" /> 
    </exec> 
</target> 

但我想重新編寫我的代碼在所有平臺上工作。我做了一些關於它的搜索,最終以this helpful page結束。我想嘗試這種方法。我在我的項目中添加了必要的Jar文件。然後我做了這些任務定義;

<fileset dir="WebContent/WEB-INF/lib"> 
<include name="sun-appserv-ant.jar"/> 
</fileset> 

<target name="as-ant-init"> 
<taskdef name="sun-appserv-deploy" 
    classname="org.apache.tools.ant.taskdefs.optional.sun.appserv.DeployTask" /> 
<taskdef name="sun-appserv-undeploy" 
    classname="org.apache.tools.ant.taskdefs.optional.sun.appserv.UndeployTask" /> 
<taskdef name="sun-appserv-component" 
    classname="org.apache.tools.ant.taskdefs.optional.sun.appserv.ComponentTask" /> 
<taskdef name="sun-appserv-admin" 
    classname="org.apache.tools.ant.taskdefs.optional.sun.appserv.AdminTask" /> 
<taskdef name="sun-appserv-jspc" 
    classname="org.apache.tools.ant.taskdefs.optional.sun.appserv.SunJspc" /> 
<taskdef name="sun-appserv-update" 
    classname="org.apache.tools.ant.taskdefs.optional.sun.appserv.UpdateTask" /> 
<taskdef name="sun-appserv-instance" 
    classname="org.apache.tools.ant.taskdefs.optional.sun.appserv.InstanceTask" /> 
<taskdef name="wsgen" classname="com.sun.tools.ws.ant.WsGen" /> 
<taskdef name="wsimport" classname="com.sun.tools.ws.ant.WsImport" /> 
<classpath path="${glassfish.path}/lib/sun-appserv-ant.jar" /> 
</target> 

我結束了這個錯誤;

taskdef class org.apache.tools.ant.taskdefs.optional.sun.appserv.DeployTask cannot be found 

任何人都可以幫助我解決這個錯誤或其他方式部署無線平臺? 謝謝。

+0

你需要告訴''其中''應使用去尋找類... – coolcfan

+0

我已經做到了目標,也沒有工作。我將classpath定義放入taskdef定義中,它也不起作用。 –

+1

我的意思是,在你的例子中,你需要在任何'taskdef'之前聲明'classpath'並給'classpath'一個ID;然後在'taskdef's中使用'classpathref =「classpathid」'。本頁面中的任何內容適用於'taskdef':http://ant.apache.org/manual/Tasks/typedef.html – coolcfan

回答

3

我從這個回覆中使用了這段代碼片段;

<presetdef name="asadmin"> 
    <java jar="${glassfish.home}/modules/admin-cli.jar" fork="true" jvm="${java.home}/bin/java" > 
    <arg line="--port ${glassfish.admin.port}" /> 
    </java> 
</presetdef> 
<target name="deploy"> 
    <asadmin failonerror="true"> 
    <arg value="deploy" /> 
    <arg value="--force=true" /> 
    <arg value="${ear.file}" /> 
    </asadmin> 
</target> 

它解決了我的問題。 感謝; https://stackoverflow.com/a/7299637/1400515

相關問題