2009-10-29 140 views
0

我有一個ANT構建腳本,它將WAR文件夾部署到我的JBOSS部署目錄中。我可以將它轉換爲可執行的WAR/JAR文件並運行它嗎?將JBOSS WAR文件夾轉換爲可執行文件JAR

例如,如果我的文件夾被調用:MYAPP.WAR,我可以生成:NEWAPP.WAR其中NEWAPP.WAR是一個可執行文件。如果我只是把它放在Jboss目錄中並啓動JBOSS,它會把它拿起來嗎?我應該將原始文件夾重命名爲其他首先測試的內容嗎?


編輯:對不起,我似乎不是很清楚。我問這個問題的原因是因爲我正在嘗試使用Crystal Reports for Eclipse。當我使用插件創建新項目時,它工作正常,當我手動將庫添加到現有的Dynamic Web Project時,問題就出現了。這是因爲該插件要求Jboss部署該項目。這樣做,Jboss將完整的項目並將其部署到一個新的WAR文件中。問題在於,這個特定的項目旨在擴展現有的應用程序。所以我通常做的是通過一個ant腳本部署我的代碼,該腳本將所有文件放在現有WAR文件夾下,並從Eclipse啓動Jboss,但我不配置它進行部署,它只是啓動應用程序,因爲WAR文件夾在那裏。 1)如果我配置了要部署的項目,我當然會得到錯誤,因爲我的Eclipse項目不包括所有的配置文件(如XML等),所以我不知道如何使用Crystal Reports插件。這是原始項目的一部分。我不想將它們包含在擴展項目中,因爲它會影響我的整個源代碼控制腳本。 2)如果我更新我的Ant腳本,只需包含所有由crystal report添加的類和文件,就會得到一個ZipException。在閱讀代碼時,Crystal Reports代碼似乎假定代碼部署在單個WAR文件中,並試圖提取所需的配置文件和報告文件,但由於該項目部署在War文件夾中,因此這當然會失敗。

所以我在問這個問題的理由是:也許,如果我轉換,我和我的Ant腳本到一個WAR文件創建WAR文件夾,Crystal Reports的代碼會工作。

想法?你們都更加困惑了嗎?

+0

通過「executable」,你是什麼意思?如果您將WAR填充到相應的JBoss目錄(通常爲$ {JBOSS_HOME}/server/default/deploy /),它將會進行熱部署。這可能是你的ANT腳本正在做的事情。 – Drew 2009-10-29 21:32:14

回答

0

你似乎在這裏混淆兩個概念:

WAR file用於打包的Web應用程序。沒有(也不會在應用程序服務器或servlet容器之外運行)沒有意義。沒有「可執行的」WAR文件這樣的東西;但只要容器配置得當,它確實可以進行熱部署(例如,只要將容器放入指定的文件夾而不需要重新啓動容器,就可以進行部署)。

JAR file是用來封裝一組類和/或資源,可能構成一個應用程序。在JAR文件的清單中可能會有declare an entry point,因此運行java -jar jar_file_name會導致指定的入口類被啓動。在操作系統中,java -jar ...默認爲.jar文件擴展名,直接啓動jar(從命令行/通過雙擊/ etc ...)是可能的。這就是它的名字「可執行jar」。

0

看來,你的意思是不是大多數人以外的東西,當你說「可執行」。如果您有一個名爲MYAPP.WAR的目錄,當您將它放入部署目錄時會自動部署,您可以將其壓縮(zip _MYAPP.WAR MYAPP.WAR)並將_MYAPP.WAR部署到部署目錄中。是的,你應該在這之前取消部署MYAPP.WAR。

您還可以同時創建既是可執行JAR文件又是可部署WAR文件的存檔。 Hudson這樣做,你可以通過研究他們的WAR文件來了解他們是如何做到的。