天天看點

使用maven編譯Java項目綜述需要建立項目建立項目結構定義簡單的Maven編譯編譯Java代碼聲明依賴

本文示範了用maven編譯java項目

時間:15分鐘

文本編輯器或者ide

jdk 6 或者更高版本

本例主要為了展示maven,是以java的項目力求簡單。

選擇一個項目目錄,在 *nix系統上使用下面語句

window下使用指令

建立如下結構:

在<code>src/main/java/hello</code>目錄下建立java檔案<code>helloworld.java</code>和 <code>greeter.java</code>

<code>src/main/java/hello/helloworld.java</code>

<code>src/main/java/hello/greeter.java</code>

首先,在項目的根目錄下建立一個maven項目定義檔案<code>pom.xml</code>,該檔案主要是說明項目的名稱、版本和依賴庫

<code>pom.xml</code>

除了&lt;packaging&gt; 元素可選外,其他的元素是構成<code>pom.xml</code> 檔案的最基本的元素了。它包括以下幾個項目的配置:

&lt;modelversion&gt; :pom 子產品版本(通常是4.0.0).

&lt;groupid&gt; :項目所屬的組織編号,通常用域名

&lt;artifactid&gt; 項目的名稱(比如,jar或者war的名稱)

&lt;version&gt; 項目編譯的版本号

&lt;packaging&gt; 項目打包形式,jar或者war

運作下面語句編譯

編譯完成的<code>.class</code>檔案将會出現在<code>target/classes</code>目錄下.如下圖 

使用maven編譯Java項目綜述需要建立項目建立項目結構定義簡單的Maven編譯編譯Java代碼聲明依賴
使用maven編譯Java項目綜述需要建立項目建立項目結構定義簡單的Maven編譯編譯Java代碼聲明依賴

運作項目:

輸出如下: 

使用maven編譯Java項目綜述需要建立項目建立項目結構定義簡單的Maven編譯編譯Java代碼聲明依賴

如果不想直接運作<code>.class</code>檔案,可以将其打包:

打包完成後,會在<code>target</code>目錄下生成一個jar檔案,檔案名由&lt;artifactid&gt; 和 &lt;version&gt;組成。比如本例,将會根據<code>pom.xml</code>生成<code>gs-maven-0.1.0.jar</code>

使用maven編譯Java項目綜述需要建立項目建立項目結構定義簡單的Maven編譯編譯Java代碼聲明依賴
使用maven編譯Java項目綜述需要建立項目建立項目結構定義簡單的Maven編譯編譯Java代碼聲明依賴

 如果你想安裝您的項目的jar檔案到本地maven倉庫,那麼你應該調用下面語句:

此時,你的項目代碼将會經過編譯、測試、打包并拷貝到本地依賴庫,提供給其他項目引用。

說到項目依賴,下面說下<code>聲明依賴</code>

上面的例子比較簡單,沒有用到其他庫。但是真實的項目可能會引用(依賴)到很多其他庫。

下面例子,依賴了<code>joda time</code>的庫。

修改<code>src/main/java/hello/helloworld.java</code>

現在運作<code>mvn compile</code>将會報錯,因為沒有聲明依賴。在 &lt;project&gt; 節點下插入如下:

使用maven編譯Java項目綜述需要建立項目建立項目結構定義簡單的Maven編譯編譯Java代碼聲明依賴

這段内容就聲明了項目的依賴。每個依賴節點&lt;dependency&gt;都由三個子節點組成:

&lt;groupid&gt; : 該依賴庫所屬的組織名稱

&lt;artifactid&gt; : 依賴的庫名

&lt;version&gt; : 依賴的庫版本

在pom 4中,&lt;dependency&gt; 中還引入了&lt;scope&gt; ,它主要管理依賴的部署。目前&lt;scope&gt; 可以使用5個值:

compile,預設值,适用于所有階段,會随着項目一起釋出。

provided,類似compile,期望jdk、容器或使用者會提供這個依賴。如servlet.jar。

runtime,隻在運作時使用,如jdbc驅動,适用運作和測試階段。

test,隻在測試時使用,用于編譯和運作測試代碼。不會随項目釋出。

system,類似provided,需要顯式提供包含依賴的jar,maven不會在repository中查找它。

現在你運作<code>mvn compile</code>或者<code>mvn package</code>,maven會自動下載下傳相關依賴。

完整的<code>pom.xml</code>

使用maven編譯Java項目綜述需要建立項目建立項目結構定義簡單的Maven編譯編譯Java代碼聲明依賴

<a href="http://www.vineetmanohar.com/2009/11/3-ways-to-run-java-main-from-maven/">http://www.vineetmanohar.com/2009/11/3-ways-to-run-java-main-from-maven/</a>