2015-03-03 38 views
0

我試圖編譯和運行在這個倉庫的一些基本的Java代碼: https://github.com/jasebell/mlbookexamples機器學習Maven構建 - 我如何得到它的工作?

舉個例子,Java文件夾,裏面chapter2.BritneyDilemma。

我試圖用maven來做這件事(因爲有一個pom.xml),但我覺得有一些東西讓我失望。我對Maven瞭解不多,我的背景是C和cmake。乍一看,我可以看出爲什麼人們討厭Maven。該項目似乎並沒有完全配置的pom.xml /顯得相當不規範:

  • ,只拉下一些依賴,例如Br​​itneyDilemma要求classifier4J但這不是在pom.xml提及。
  • 當我做任何簡單的命令mvn安裝/編譯等,輸出到目標基本上什麼都沒有(這是一個幾乎是空的jar)。

我已經試過各種方法,如:

  • 修改的pom.xml在maven assembly plugin添加和運行mvn clean compile package。最多我設法得到一個打包pom.xml依賴關係的jar,但由於沒有classifier4j仍然無法編譯BritneyDilemma(這在pom.xml中沒有提及,所以我不確定maven應該知道該怎麼做這是一個要求/從哪裏拉)。
  • 遠離maven,下載classifer4j並通過命令行進行編譯。運行時錯誤和一些調查指出,我錯過了一些classifier4j dependency,我認爲這是因爲我離開了maven,否則這將被一些遞歸建築物照顧。

這是一個庫存增加的嘗試,作出任何修改/取的pom.xml如:

~/projects/mlbookexamples/java (master) $ mvn install 
[INFO] Scanning for projects... 
[INFO] ------------------------------------------------------------------------ 
[INFO] Building mlbook 
[INFO] task-segment: [install] 
[INFO] ------------------------------------------------------------------------ 
[INFO] [resources:resources {execution: default-resources}] 
[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent! 
[INFO] skip non existing resourceDirectory /home/alex/projects/mlbookexamples/java/src/main/resources 
Downloading: http://repo.springsource.org/libs-milestone//javax/batch/javax.batch-api/1.0/javax.batch-api-1.0.jar 
34K downloaded (javax.batch-api-1.0.jar) 
[INFO] [compiler:compile {execution: default-compile}] 
[INFO] No sources to compile 
[INFO] [resources:testResources {execution: default-testResources}] 
[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent! 
[INFO] skip non existing resourceDirectory /home/alex/projects/mlbookexamples/java/src/test/resources 
[INFO] [compiler:testCompile {execution: default-testCompile}] 
[INFO] No sources to compile 
[INFO] [surefire:test {execution: default-test}] 
[INFO] No tests to run. 
[INFO] Surefire report directory: /home/alex/projects/mlbookexamples/java/target/surefire-reports 

------------------------------------------------------- 
T E S T S 
------------------------------------------------------- 

Results : 

Tests run: 0, Failures: 0, Errors: 0, Skipped: 0 

[INFO] [jar:jar {execution: default-jar}] 
[WARNING] JAR will be empty - no content was marked for inclusion! 
[INFO] Building jar: /home/alex/projects/mlbookexamples/java/target/mlbookexamples-1.0-SNAPSHOT.jar 
[INFO] [install:install {execution: default-install}] 
[INFO] Installing /home/alex/projects/mlbookexamples/java/target/mlbookexamples-1.0-SNAPSHOT.jar to /home/alex/.m2/repository/com/datasentiment/mlbook/mlbookexamples/1.0-SNAPSHOT/mlbookexamples-1.0-SNAPSHOT.jar 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD SUCCESSFUL 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 6 seconds 
[INFO] Finished at: Wed Mar 04 08:38:56 NZDT 2015 
[INFO] Final Memory: 33M/249M 
[INFO] ------------------------------------------------------------------------ 
~/projects/mlbookexamples/java/target (master) $ java -jar mlbookexamples-1.0-SNAPSHOT.jar 
no main manifest attribute, in mlbookexamples-1.0-SNAPSHOT.jar 

我跑的Arch Linux。

+1

我不知道如何在Linux上獲得它,但您需要安裝Maven - 在Windows中,您將其添加到Path變量以獲取與Maven關聯的'mvn'programm,然後在文件夾中運行'mvn clean install' pom.xml文件仍然存在 - Maven會通知您有關pom.xml的任何問題 – JBA 2015-03-03 12:07:00

+1

我認爲您將能夠儘快處理Linux Part - > http://maven.apache.org/download.cgi 'mvn'命令被識別出來,你可以在pom.xml文件所在的文件夾中使用'mvn clean install'來構建示例 – JBA 2015-03-03 12:14:18

+0

我已經安裝了maven,'mvn clean install'將不起作用是多個主要實例(每個章節大約一個左右)。一個mvn的安裝沒有下載一半的互聯網到〜/ .m2,我不知道這是如何讓我前進,因爲在目標文件夾裏面還有一個[基本]空的jar文件。如果從項目中查看pom.xml,您會看到它只列出了一些存儲庫,因此我不確定它的全部用途是什麼:https://github.com/jasebell/mlbookexamples/blob/master/的Java/pom.xml的 – Stiege 2015-03-03 19:13:57

回答

0

要編譯第2章,似乎沒有必要獲取pom.xml中列出的依賴關係。

您可以簡單地從chapter2文件夾編譯BritneyDilemma(記住包括從 http://sourceforge.net/projects/classifier4j/files/下載的Classifier4J依賴項,這可以保存在chapter2文件夾中)。

~/projects/mlbookexamples/java/src/chapter2 (master) $ javac -cp Classifier4J-0.6.jar BritneyDilemma.java 

然後,您可以去src文件夾,然後運行類,再次爲第2章文件夾內的classifier4j罐子的參考。

~/projects/mlbookexamples/java/src (master) $ java -classpath .:chapter2/Classifier4J-0.6.jar chapter2.BritneyDilemma 
brittany spears = 0.7071067811865475 
brittney spears = 0.7071067811865475 
britany spears = 0.7071067811865475 
britny spears = 0.7071067811865475 
briteny spears = 0.7071067811865475 
britteny spears = 0.7071067811865475 
briney spears = 0.7071067811865475 
brittny spears = 0.7071067811865475 
brintey spears = 0.7071067811865475 
britanny spears = 0.7071067811865475 
britiny spears = 0.7071067811865475 
britnet spears = 0.7071067811865475 
britiney spears = 0.7071067811865475 
christina aguilera = 0.0 
britney spears = 0.9999999999999998 

您可能已經擁有所需的日誌記錄庫,但它可以通過包管理器作爲libcommons-logging-java來抓取。

另外一般情況下使用eclipse更容易。只需創建一個新的Java項目,但將工作目錄從缺省庫更改爲java目錄。在這裏創建一個新的文件夾'lib'並放入classifier4j jar中。在eclipse中,右鍵單擊classifier4j並單擊「添加到構建路徑」。您現在可以簡單地點擊BritneyDilemma或任何其他來源(在lib中添加依賴關係並在需要時添加到構建路徑),然後根據需要運行。

快樂機器學習。