TL; DR:在Java世界中,是否有一種標準方式讓構建工具安裝他們剛剛構建的可執行文件(如C世界的make install
)?Java世界中的「make install」的等價物
(我將很高興與該會在Linux上只工作溶液)
更多細節:
我必須通過github上分佈的Java項目。編譯和依賴關係使用Maven 2.運行mvn package
管理建立與我的罐子壓縮包,並在運行時所需要的依賴關係,加上其設置類路徑和啓動主要的廣口瓶中的可執行腳本:
#!/bin/bash
cpBase="$(dirname "$0")"
java -cp "$cpBase/*" dw.cli.Program [email protected]
所以,如果有人想她的計算機上安裝此,一個需要:
- 運行
mvn package
- ,然後解壓壓縮包,並在目錄中的內容複製在她的
PATH
。
在另一方面我喜歡的自動工具的工作方式:用戶並不需要手動複製任何東西,因爲構建步驟make install
處理安裝她。
我可以使用cp
通過我的pom.xml
中的ant任務來模擬此行爲,但我更感興趣的是學習Java的最佳實踐,而不是提供非標準的行爲。
看起來好像是maven doesn't provide this behavior。另一方面,我完全不知道其他Java構建工具可以做些什麼。
編輯:
據我瞭解mvn install
和mvn deploy
不適合我的需要,因爲他們會在我的本地或遠程倉庫安裝我的罐子。而我想對我的PATH
安裝我的可執行文件(例如:安裝我的包裝腳本/usr/local/bin
)
我可能只是不明白這個問題,但你爲什麼不寫一個'Makefile'並把它放到你的項目的根目錄?有了這個,你可以將所有需要的步驟封裝在'install'任務中,以便確實只需編寫'make install'。 – jeromegamez
當然,我可以添加一個Makefile(或一個特別的shell腳本)。我從來沒有見過這種設置的Java回購,我想堅持Java通用實踐。我的意思是:當我克隆一個C庫時,我很少需要查看README以瞭解如何編譯和安裝它,因爲它總是相同的。我想知道Java是否也有這種規則。 – gturri