我是 jar 檔案和 Maven 的新手,并試圖了解 Maven 的使用。在這篇Maven in 5 minutes文章中,我們使用 maven 創建了 my-app 專案,目錄結構如下所示:
my-app
|-- pom.xml
-- src
|-- main
| -- java
| -- com
| -- mycompany
| -- app
| -- App.java
-- test
-- java
-- com
-- mycompany
-- app
-- AppTest.java
然后我們使用 1.mvn package其次是 2.java -cp target/my-app-1.0-SNAPSHOT.jar com.mycompany.app.App運行我們的 App.java 類。
我的理解是 1. 創建一個新的“目標”目錄并在其中創建 jar 檔案。我們使用 2. 使用 jar 檔案運行 App 類。我的問題是,為什么我們以這種方式運行 App 類?為什么比只去 src/main/java/com/mycompany/app 并運行更好java App.java?也許我不明白包裝的好處。謝謝你的幫助。
uj5u.com熱心網友回復:
要知道Why的答案,首先需要了解以下幾點:
如何編譯Java程式以及如何運行編譯后的Java程式(尤其是在包內宣告
的Test程式)并且不能像這樣運行它,它會給你錯誤“找不到或加載主類測驗”) 所以,只是去 src/main/java/com/mycompany/app 并運行將不起作用,但從 src/main /java 檔案夾,您可以像這樣運行它hellojavac hello\Test.javajava hello.Testjava Testjava App.javacom.mycompany.app.App什么是jar包裝。
jar即,Java 存檔只不過是一個聚合所有 Java 類的 zip 檔案,因此它可以作為一個單元分發。Classpath
Classpath 是 java 查找已編譯類的地方如何運行依賴于其他 jar 檔案中的 Java 類的程式
假設如果我的測驗類依賴于 abc.jar 檔案中的類 XYZ,那么我們需要告訴 java 在這個 abc.jar 中搜索依賴項(包括這個 jar在類路徑中)。這可以使用命令來完成,java -cp abc.jar hello.Test這里-cp選項只是一個類路徑,用于告訴 java 可以在其中找到類的目錄或檔案。當測驗類在 jar 檔案中時可以使用此命令,就像您的情況一樣Maven
如果你已經了解了上面的內容,那么你就會知道 Maven 與運行你的程式沒有任何關系。它只是一個構建工具,可幫助從您的代碼構建 jar 檔案,并幫助執行/組織除構建之外的不同任務,例如干凈、運行測驗等。
uj5u.com熱心網友回復:
mvn package
Maven是java的包管理工具之一。標志包,打包app。它用于為專案宣告 deps,打包專案,構建專案,并將二進制檔案安裝到 java 行程可以讀取它們的位置(~/.m2/xx/..)。
java -cp target/my-app-1.0-SNAPSHOT.jar
運行app,呼叫app的主類,-cp代表classPath
uj5u.com熱心網友回復:
Maven 不僅是一個打包工具,而且還管理依賴項。
如果你的專案很簡單,沒有依賴/沒有匯入其他包,你可以“只去 src/main/java/com/mycompany/app 并運行java App.java”。如果不是這樣,你就做不到(試試看)
maven package將依賴項匯出/復制到target檔案夾,以便 JDK 可以找到所需的類并且您可以輕松使用它
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/488037.html
