我習慣於在Python中進行編程。每當我創建一個項目,通常有bin/
文件夾,其中各種腳本保存,例如:爲基於JVM的項目創建助手「腳本」
- 從ORM
- 生成一些代碼,創建數據庫模式(CSS,JavaScript等),基於別的東西
- 腳本以圖形可視化的一些數據
什麼是做這種事情在斯卡拉(和Java)的最佳實踐。自定義maven目標,也許?
我讀過,有一些任務,但他們不能使用應用程序本身的編譯庫。
更新:這裏是的地方,在那裏說我不能使用應用程序代碼編譯:sbt Task classpath
我習慣於在Python中進行編程。每當我創建一個項目,通常有bin/
文件夾,其中各種腳本保存,例如:爲基於JVM的項目創建助手「腳本」
什麼是做這種事情在斯卡拉(和Java)的最佳實踐。自定義maven目標,也許?
我讀過,有一些任務,但他們不能使用應用程序本身的編譯庫。
更新:這裏是的地方,在那裏說我不能使用應用程序代碼編譯:sbt Task classpath
我會照的東西Java方面的一些情況。如果您使用的是Maven,請從maven可以生成的簡單項目原型開始。它會爲你創建目錄結構,你可以開始添加內容。有一個bin
腳本目錄是非常好的。也就是說,我仍然喜歡在慣用的Java中執行類似於模式創建的東西,而不是生成一些SQL文件。在我看來,這是更安全和更可持續的長期。例如,使用註釋的Hibernate將爲您創建數據庫/在您初始化一個hibernate會話後立即更新數據庫,以便您不必混淆生成模式並將該sql文件檢入到vcs等。 Maven確實有很多插件可以做你想做的,所以這將是首選路線。如果他們不這樣做,你可以始終讓maven在bin
目錄中執行你的腳本之一。
例如,在我的API項目中,當servlet初始化時,我創建/更新了我的Cassandra密鑰空間和列系列。這樣,您就知道您的數據存儲將始終處於最新狀態(前提是每個人都將其更改/更新添加到該init方法中)。這消除了所有的雜耍......「廢話它不起作用」「......哦,那是因爲你沒有創建列家族......從我們的Git中獲取該文件......但它可能不是所以請求CassandraGuy爲您導出最新的模式,然後將其導入到cassandra實例中。「這並不能解決所有問題。人們仍然需要遵守紀律,並考慮他們正在做出什麼樣的改變。如果有人決定在具有數百萬行的現有MySQL表上的init中添加索引,請記住,當init完成索引創建時,它肯定會鎖定該表......
他們爲什麼不能?我不知道sbt,只有Ant/Maven /等,但他們都可以使用項目工件。另一個常見的解決方案是使用批處理或shell文件。 –
當然,你可以使用scala語法編寫bash腳本,只需將這3行放在'.sh'文件的頭部:'#!/ bin/sh','exec scala'$ 0「」$ @「' ,'!#'並按照常規的scala語法進行操作。 –
@DaveNewton maven怎麼做? –