2012-06-18 79 views
2

我有Maven項目,但在其中一臺服務器上,我必須在沒有Maven的情況下構建它。
可以使用標準的JDK命令。我在哪裏可以看到在構建項目時Maven發送給JDK的命令?建設沒有Maven的Maven項目

+0

爲什麼你需要在沒有Maven的情況下構建? – khmarbaise

+0

沒有Maven在這個環境下,我無法安裝它 – Ilya

+1

然後構建軟件?聽起來很奇怪。更改爲您可以創建EAR等環境並僅傳輸EAR而不是源代碼......無論如何都是更好的.. – khmarbaise

回答

1

這是我的解決方案。當然,這是硬編碼,和項目是非常小的,但對我來說是有幫助的

項目結構:
主文件夾
- 依賴(DIR)
- 模塊1 - SRC ...
- 模塊2 - src ...
- manufest.template(文件)
module2依賴於module1,module1與JDK1.5,JDK1.6編譯爲module2。

@echo off 

set JODA=dependency\joda-time-1.6.2.jar 
set EJB=dependency\ejb-api-3.0.jar 
set PERSISTANCE_API=dependency\persistence-api-1.0.jar 
set DEPENDENCIES=%EJB%;%JODA%;%PERSISTANCE_API% 
set TEMP_FILE=temp 
set PUBLIC_INTERFACE_CLASSES=target\target-module1 
set CODEGEN_CLASSES=target\target-module2 
mkdir target 
mkdir %MODULE1_CLASSES% 
mkdir %MODULE2_CLASSES% 

dir module1\*.java /s /B > %TEMP_FILE% 
%JAVA_HOME_1_5%\bin\javac -classpath %DEPENDENCIES%;%MODULE1_CLASSES% -d %MODULE1_CLASSES% @%TEMP_FILE% 

dir module2\*.java /s /B > %TEMP_FILE% 
%JAVA_HOME_1_6%\bin\javac -classpath %DEPENDENCIES%;%JAVA_HOME_1_6%\lib\tools.jar;%MODULE1_CLASSES%;%MODULE2_CLASSES% -d %MODULE2_CLASSES% @%TEMP_FILE% 

jar cf module1.jar -C %MODULE1_CLASSES% . 
jar cfm module2.jar manifest.template -C %MODULE2_CLASSES% . 

rm %TEMP_FILE% 
rm -r target 
6

Maven做了很多。沒有簡單的方法來模擬Maven在沒有Maven的情況下做什麼。

如果絕對不能在服務器上安裝maven,請在另一臺服務器(或本地)上構建工件,並通過scp將它們移動到服務器上。

這就是說:我曾經有一個類似的場景,我從Maven生成了一個完全需要運行本地構建但無法運行Maven(禁止網絡訪問)的服務器的RPM。我所做的就是把所有的依賴關係放在RPM中,再加上一個Ant分發和一個Ant構建文件。在RPM安裝腳本中,依賴項被解壓縮並調用Ant腳本。它的工作,但它意味着雙重工作。