2012-07-22 28 views
0

我們將爲我們的客戶開發一個以Java EE技術編碼的巨大webapp。我的客戶端不支持在他們的服務器中使用OSS的ANT和Eclipse。因此我們的要求是在我們的本地系統中編寫和開發應用程序並對其進行測試,然後我們需要在客戶端服務器中提供源代碼,在那裏我們將運行一個部署腳本,它將編譯所需的java文件源文件並將.class文件和其他資源文件部署到在該服務器上運行的Tomcat(HP-UX)。打包並部署沒有ANT的Java EE webapp

是否可以使用JAVA_HOME/bin中提供的javac,jar或其他命令來使用ANT腳本部署應用程序?如果有任何這樣的實施可以請指導我們?我很想知道在ANT開發之前,JAVA開發人員是如何用來部署大型應用程序的。我開始知道MAKE命令(在我們的服務器上可用)不適合Java應用程序。

注意:我們將有複雜的包層次(多達4個級別)

UPDATE:它看起來像我沒有一個簡單的答案。我想說服我們的客戶使用ANT。如果沒有,我會根據下面的評論爲我的客戶開發一個跨平臺的定製構建工具......感謝傢伙..我不認爲構建這種類型的工具並不難,如果我們知道包裝和部署的正確步驟。 ..

+0

爲什麼你需要在客戶端服務器建立呢?提交戰爭或耳朵文件會不會更自然? – 2012-07-22 17:29:27

+0

是的,我們可以做到這一點。但客戶端只需要源文件。比方說,我們提供源文件和.war文件。但在未來,如果他們想自己,他們不能維護應用程序,因爲他們不能夠像OSS ANT,ECLIPSE安裝在他們的開發系統.... – Venkatesh 2012-07-22 17:34:17

+1

所以Tomcat是不是OSS呢? – Codo 2012-07-22 17:41:30

回答

1

我覺得整個設置是非常奇怪的,但是無論如何...

.war文件是非常簡單的。這是一個具有給定目錄結構的ZIP文件。您可以使用首先運行javac來編譯源代碼的shell腳本輕鬆創建該腳本,然後將該文件複製到正確的目錄,並最終將其打包到帶有.war擴展名的ZIP文件中。

你會在網上找到.war文件的規範。或者你可以在你的環境中創建一個,使用ZIP工具打開它並查看哪些文件需要去哪裏。

更新:如果你的應用程序很大,那麼你可以將它分解成模塊。每個模塊將被編譯並打包成一個單獨的.jar文件(基本上也是一個ZIP文件)。如果一個模塊依賴於另一個,那麼只需將所需的.jar文件作爲類路徑參數傳遞給編譯器即可。

+0

感謝您的回答。我一直在爲小型應用程序做同樣的事情,我獨立使用每個包的javac命令,然後使用jar命令將其打包。但是我們的代碼被放入更多的包中......而且JAVA文件依賴於其他包中的其他java文件(超級類)。所以在這種情況下,一個javac命令不會從src /文件夾編譯整個源代碼。此外,隨着時間的推移,可以包括一個新的軟件包......(必須是可擴展的)。 – Venkatesh 2012-07-22 17:56:46

+0

@Venkatesh:你也可以使用.jar文件。看到我上面的更新。 – Codo 2012-07-22 18:00:54

+0

感謝您的更新。但是這是一種情況。 PACKAGE1中的JAVA1文件是PACKAGE2中JAVA2文件的子類。 PACKAGE2中的JAVA3文件是PACKAGE1中JAVA4文件的子類。在那種情況下,哪個包必須先被編譯? – Venkatesh 2012-07-22 18:06:50

0

如果你真的必須接受客戶的要求,那麼這可能是我該怎麼做的。

爲了避免必須修改每個添加的文件的依賴關係,我將介紹將源代碼,jar文件和輸出文件放在哪裏的約定。然後,我將創建一個腳本,其中包含幾個設置:

  1. 戰爭名稱。
  2. 庫位置列表。
  3. 源根目錄,也許讓根目錄的文件夾名稱爲jar文件名稱。

然後當運行腳本時,它會創建一個類路徑,包括庫位置列表中顯示的所有jar文件。然後,它將爲每個源位置編譯java文件,構建一個jar並將jar文件添加到類路徑(以防後面的模塊需要它)。

最後,將建立一個web應用程序結構與外部庫,新創建的罐子,複製在ASP文件(可能是預編譯),然後使用壓縮包的Web應用程序結構成war文件。

瞭解,所以你不使用任何外殼的特定功能,其外殼是由客戶接受。我不認爲你需要什麼幻想,所以不應該太難。

+0

謝謝羅傑。我想根據上述指導方針爲客戶實施定製構建工具。我們仍然說服我們的客戶使用ANT。 – Venkatesh 2012-07-23 21:16:56