国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

使用Maven構(gòu)建Java項(xiàng)目

mushang / 909人閱讀

摘要:要從頭開始,請(qǐng)繼續(xù)使用構(gòu)建。現(xiàn)在您已經(jīng)準(zhǔn)備好使用構(gòu)建項(xiàng)目,下一步是安裝。項(xiàng)目使用名為的文件定義。項(xiàng)目所屬的組或組織。默認(rèn)情況下,所有依賴項(xiàng)都作為依賴項(xiàng)確定范圍。概要恭喜您已經(jīng)為構(gòu)建項(xiàng)目創(chuàng)建了一個(gè)簡(jiǎn)單而有效的項(xiàng)目定義。

本指南將指導(dǎo)您使用Maven構(gòu)建一個(gè)簡(jiǎn)單的Java項(xiàng)目。

你要構(gòu)建什么

您將創(chuàng)建一個(gè)提供一天中時(shí)間的應(yīng)用程序,然后使用Maven構(gòu)建它。

你需要什么

大約15分鐘

最喜歡的文本編輯器或IDE

JDK 8或更高版本

如何完成本指南

與大多數(shù)Spring入門指南一樣,您可以從頭開始并完成每個(gè)步驟,或者您可以繞過您已熟悉的基本設(shè)置步驟。無論哪種方式,您最終都會(huì)使用工作代碼。

從頭開始,請(qǐng)繼續(xù)使用Gradle構(gòu)建。

跳過基礎(chǔ)知識(shí),請(qǐng)執(zhí)行以下操作:

下載并解壓縮本指南的源存儲(chǔ)庫(kù),或使用Git克隆它:

git clone https://github.com/spring-guides/gs-maven.git

進(jìn)入gs-maven/initial

跳到最開始。

完成后,可以根據(jù)gs-maven/complete中的代碼檢查結(jié)果。

設(shè)置項(xiàng)目

首先,您需要為Maven設(shè)置一個(gè)Java項(xiàng)目來構(gòu)建。為了保持對(duì)Maven的關(guān)注,現(xiàn)在讓項(xiàng)目盡可能簡(jiǎn)單。在您選擇的項(xiàng)目文件夾中創(chuàng)建此結(jié)構(gòu)。

創(chuàng)建目錄結(jié)構(gòu)

在您選擇的項(xiàng)目目錄中,創(chuàng)建以下子目錄結(jié)構(gòu);例如,在*nix系統(tǒng)上使用mkdir -p src/main/java/hello:

└── src
    └── main
        └── java
            └── hello

在src/main/java/hello目錄中,您可以創(chuàng)建所需的任何Java類。為了與本指南的其余部分保持一致,請(qǐng)創(chuàng)建以下兩個(gè)類:HelloWorld.javaGreeter.java

src/main/java/hello/HelloWorld.java

package hello;

public class HelloWorld {
    public static void main(String[] args) {
        Greeter greeter = new Greeter();
        System.out.println(greeter.sayHello());
    }
}

src/main/java/hello/Greeter.java

package hello;

public class Greeter {
    public String sayHello() {
        return "Hello world!";
    }
}

現(xiàn)在您已經(jīng)準(zhǔn)備好使用Maven構(gòu)建項(xiàng)目,下一步是安裝Maven。

Maven可以在http://maven.apache.org/download.cgi下載為zip文件。只需要二進(jìn)制文件,因此請(qǐng)查找指向apache-maven-{version}-bin.zip或apache-maven-{version}-bin.tar.gz的鏈接。

下載zip文件后,將其解壓縮到您的計(jì)算機(jī)上。然后將bin文件夾添加到路徑中。

要測(cè)試Maven安裝,請(qǐng)從命令行運(yùn)行mvn:

mvn -v

如果一切順利,您應(yīng)該會(huì)看到有關(guān)Maven安裝的一些信息。它看起來類似于(盡管可能略有不同)以下內(nèi)容:

Apache Maven 3.0.5 (r01de14724cdef164cd33c7c8c2fe155faf9602da; 2013-02-19 07:51:28-0600)
Maven home: /usr/share/maven
Java version: 1.7.0_09, vendor: Oracle Corporation
Java home: /Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk/Contents/Home/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "mac os x", version: "10.8.3", arch: "x86_64", family: "mac"

恭喜!你現(xiàn)在安裝了Maven。

定義一個(gè)簡(jiǎn)單的Maven pom

現(xiàn)在已經(jīng)安裝了Maven,您需要?jiǎng)?chuàng)建一個(gè)Maven項(xiàng)目定義。Maven項(xiàng)目使用名為pom.xml的XML文件定義。除此之外,該文件還提供了項(xiàng)目在外部庫(kù)上的名稱,版本和依賴關(guān)系。

在項(xiàng)目的根目錄下創(chuàng)建一個(gè)名為pom.xml的文件(即將其放在src文件夾旁邊),并為其提供以下內(nèi)容:



    4.0.0

    org.springframework
    gs-maven
    jar
    0.1.0

    
        1.8
        1.8
    

    
        
            
                org.apache.maven.plugins
                maven-shade-plugin
                2.1
                
                    
                        package
                        
                            shade
                        
                        
                            
                                
                                    hello.HelloWorld
                                
                            
                        
                    
                
            
        
    

除了可選**元素之外,這是構(gòu)建Java項(xiàng)目所必需的最簡(jiǎn)單的pom.xml文件。它包括項(xiàng)目配置的以下詳細(xì)信息:

**。POM模型版本(總是4.0.0)。

**。項(xiàng)目所屬的組或組織。通常表示為反向域名。

**。要賦予項(xiàng)目庫(kù)工件的名稱(例如,其JAR或WAR文件的名稱)。

**。正在構(gòu)建的項(xiàng)目的版本。

** - 如何打包項(xiàng)目。對(duì)于JAR文件打包,默認(rèn)為“jar”。使用“war”進(jìn)行WAR文件打包。

在選擇版本控制方案時(shí),Spring建議采用語(yǔ)義版本控制方法。

此時(shí),您已定義了一個(gè)最小但功能強(qiáng)大的Maven項(xiàng)目。

構(gòu)建Java代碼

Maven現(xiàn)在已準(zhǔn)備好構(gòu)建該項(xiàng)目。您現(xiàn)在可以使用Maven執(zhí)行多個(gè)構(gòu)建生命周期目標(biāo),包括編譯項(xiàng)目代碼的目標(biāo),創(chuàng)建庫(kù)包(例如JAR文件),以及在本地Maven依賴庫(kù)中安裝庫(kù)。

要嘗試構(gòu)建,請(qǐng)?jiān)诿钚兄邪l(fā)出以下命令:

mvn compile

這將運(yùn)行Maven,告訴它執(zhí)行編譯目標(biāo)。完成后,您應(yīng)該在target/classes目錄中找到已編譯的.class文件。

由于您不太可能希望直接分發(fā)或使用.class文件,因此您可能希望改為運(yùn)行package:

mvn package

package將編譯Java代碼,運(yùn)行任何測(cè)試,并通過包裝內(nèi)的一個(gè)JAR文件中的代碼終止上升的目標(biāo)目錄。JAR文件的名稱將基于項(xiàng)目和。例如,給定之前的最小pom.xml文件,JAR文件將命名為gs-maven-0.1.0.jar。

如果您已將“jar” 的值更改為“war”,則結(jié)果將是目標(biāo)目錄中的WAR文件而不是JAR文件。

Maven還在本地計(jì)算機(jī)上維護(hù)了一個(gè)依賴存儲(chǔ)庫(kù)(通常位于主目錄中的.m2/repository目錄中),以便快速訪問項(xiàng)目依賴項(xiàng)。如果您想將項(xiàng)目的JAR文件安裝到該本地存儲(chǔ)庫(kù),那么您應(yīng)該調(diào)用install目標(biāo):

mvn install

install將編譯,測(cè)試和打包項(xiàng)目的代碼,然后將其復(fù)制到本地依賴性庫(kù),準(zhǔn)備好另一個(gè)項(xiàng)目中引用它作為一個(gè)依賴。

說到依賴關(guān)系,現(xiàn)在是時(shí)候在Maven構(gòu)建中聲明依賴關(guān)系了。

聲明依賴關(guān)系

簡(jiǎn)單的Hello World示例是完全獨(dú)立的,不依賴于任何其他庫(kù)。但是,大多數(shù)應(yīng)用程序依賴外部庫(kù)來處理常見和復(fù)雜的功能。

例如,假設(shè)除了說“Hello World!”之外,您還希望應(yīng)用程序打印當(dāng)前日期和時(shí)間。雖然您可以使用本機(jī)Java庫(kù)中的日期和時(shí)間工具,但您可以使用Joda Time庫(kù)使事情變得更有趣。

首先,將HelloWorld.java更改為如下所示:

package hello;

import org.joda.time.LocalTime;

public class HelloWorld {
    public static void main(String[] args) {
        LocalTime currentTime = new LocalTime();
        System.out.println("The current local time is: " + currentTime);
        Greeter greeter = new Greeter();
        System.out.println(greeter.sayHello());
    }
}

這里HelloWorld使用Joda Time的LocalTime類來獲取和打印當(dāng)前時(shí)間。

如果您現(xiàn)在要運(yùn)行mvn compile以構(gòu)建項(xiàng)目,則構(gòu)建將失敗,因?yàn)槟丛跇?gòu)建中將Joda Time聲明為編譯依賴項(xiàng)。您可以通過將以下行添加到pom.xml(在元素內(nèi))來解決此問題:


        
            joda-time
            joda-time
            2.9.2
        

這個(gè)XML塊聲明了項(xiàng)目的依賴項(xiàng)列表。具體來說,它聲明了Joda Time庫(kù)的單一依賴項(xiàng)。在元素內(nèi),依賴關(guān)系坐標(biāo)由三個(gè)子元素定義:

** - 依賴項(xiàng)所屬的組或組織。

** - 所需的庫(kù)。

** - 所需庫(kù)的特定版本。

默認(rèn)情況下,所有依賴項(xiàng)都作為compile依賴項(xiàng)確定范圍。也就是說,它們應(yīng)該在編譯時(shí)可用(如果您正在構(gòu)建WAR文件,包括在WAR的/WEB-INF/libs文件夾中)。此外,您可以指定一個(gè)元素以指定以下范圍之一:

provided - 編譯項(xiàng)目代碼所需的依賴關(guān)系,但是將在運(yùn)行時(shí)由運(yùn)行代碼的容器(例如,Java Servlet API)提供。

test - 用于編譯和運(yùn)行測(cè)試的依賴關(guān)系,但不是構(gòu)建或運(yùn)行項(xiàng)目的運(yùn)行時(shí)代碼所必需的依賴關(guān)系。

現(xiàn)在,如果您運(yùn)行mvn compilemvn package,Maven應(yīng)該從Maven Central存儲(chǔ)庫(kù)解析Joda Time依賴關(guān)系,并且構(gòu)建將成功。

寫一個(gè)測(cè)試

首先在測(cè)試范圍中將JUnit添加為pom.xml的依賴項(xiàng):


    junit
    junit
    4.12
    test

然后創(chuàng)建一個(gè)這樣的測(cè)試用例:

src/test/java/hello/GreeterTest.java

package hello;

import static org.hamcrest.CoreMatchers.containsString;
import static org.junit.Assert.*;

import org.junit.Test;

public class GreeterTest {

    private Greeter greeter = new Greeter();

    @Test
    public void greeterSaysHello() {
        assertThat(greeter.sayHello(), containsString("Hello"));
    }

}

Maven使用一個(gè)名為“surefire”的插件來運(yùn)行單元測(cè)試。此插件的默認(rèn)配置src/test/java使用名稱匹配編譯并運(yùn)行所有*Test類。您可以在命令行上運(yùn)行測(cè)試

mvn test

或者只使用mvn install上面已經(jīng)顯示的步驟(有一個(gè)生命周期定義,其中“test”作為“安裝”中的一個(gè)階段包含在內(nèi))。

這是完成的pom.xml文件:



    4.0.0

    org.springframework
    gs-maven
    jar
    0.1.0

    
        1.8
        1.8
    

    
        
        
            joda-time
            joda-time
            2.9.2
        
        
        
        
            junit
            junit
            4.12
            test
        
        
    

    
        
            
                org.apache.maven.plugins
                maven-shade-plugin
                2.1
                
                    
                        package
                        
                            shade
                        
                        
                            
                                
                                    hello.HelloWorld
                                
                            
                        
                    
                
            
        
    

完成的pom.xml文件使用Maven Shade插件,以簡(jiǎn)化JAR文件的可執(zhí)行性。本指南的重點(diǎn)是Maven的入門,而不是使用這個(gè)特定的插件。

概要

恭喜!您已經(jīng)為構(gòu)建Java項(xiàng)目創(chuàng)建了一個(gè)簡(jiǎn)單而有效的Maven項(xiàng)目定義。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/73182.html

相關(guān)文章

  • Maven 項(xiàng)目構(gòu)建基礎(chǔ)

    摘要:項(xiàng)目構(gòu)建基礎(chǔ)從屬于筆者的現(xiàn)代開發(fā)基礎(chǔ)系列文章,介紹了的歷史背景與多種構(gòu)建工具對(duì)比,以及的基本配置安裝與使用本文涉及的參考資料聲明在學(xué)習(xí)與實(shí)踐資料索引以及學(xué)習(xí)與資料索引。 Maven 項(xiàng)目構(gòu)建基礎(chǔ)從屬于筆者的現(xiàn)代 Java 開發(fā)基礎(chǔ)系列文章,介紹了 Maven 的歷史背景與多種構(gòu)建工具對(duì)比,以及 Maven 的基本配置安裝與使用;本文涉及的參考資料聲明在 Java 學(xué)習(xí)與實(shí)踐資料索引以及...

    2501207950 評(píng)論0 收藏0
  • RAINBOND源碼構(gòu)建JAVA項(xiàng)目配置MAVEN倉(cāng)庫(kù)

    摘要:清除構(gòu)建緩存為每一個(gè)服務(wù)的構(gòu)建環(huán)境提供緩存,項(xiàng)目會(huì)對(duì)的安裝目錄,配置目錄,和本地倉(cāng)庫(kù)目錄提供了緩存,用戶通過以下設(shè)置清理緩存。本文檔詳細(xì)介紹了源碼構(gòu)建項(xiàng)目時(shí)的各種詳細(xì)設(shè)置與操作。 概述 根據(jù)大量的Rainbond用戶反饋,我們發(fā)現(xiàn)在Rainbond源碼構(gòu)建java-maven項(xiàng)目的過程中,最容易出現(xiàn)問題的一環(huán)就是獲取構(gòu)件失敗。 比如: [ERROR] Failed to execute...

    MockingBird 評(píng)論0 收藏0
  • 使用 Maven 構(gòu)建 Java 項(xiàng)目

    摘要:基本配置環(huán)境變量環(huán)境變量中添加為主目錄在中添加使用阿里云中央倉(cāng)庫(kù)修改根目錄下文件夾中的文件,內(nèi)容如下創(chuàng)建基于的項(xiàng)目使用命令行創(chuàng)建使用原型插件創(chuàng)建工程。 「博客搬家」 原地址: 簡(jiǎn)書 原發(fā)表時(shí)間: 2017-03-23 Maven 是基于項(xiàng)目對(duì)象模型「POM」,可以通過一小段描述信息來管理項(xiàng)目的構(gòu)建、報(bào)告和文檔的軟件項(xiàng)目管理工具。本文總結(jié)了 Maven 的基本用法。 1. Maven...

    printempw 評(píng)論0 收藏0
  • Maven實(shí)戰(zhàn)之Quick Start

    摘要:在之前,十個(gè)項(xiàng)目可能有十種構(gòu)建方式,但通過,所有項(xiàng)目的構(gòu)建命令都是簡(jiǎn)單一致的。有利于促進(jìn)項(xiàng)目團(tuán)隊(duì)的標(biāo)準(zhǔn)化。手工勞動(dòng)往往意味著低效,意味著容易出錯(cuò)。這在很大程度上消除了重復(fù)。默認(rèn)情況下,該文件夾下放置了本地倉(cāng)庫(kù)。學(xué)習(xí)實(shí)戰(zhàn)許曉斌著 Introduction Maven是一個(gè)異常強(qiáng)大的構(gòu)建工具,能夠幫我們自動(dòng)化構(gòu)建過程,從清理、編譯、測(cè)試到生成報(bào)告,再到打包和部署。通過Maven,我們只需要...

    Yi_Zhi_Yu 評(píng)論0 收藏0
  • Lagom參考指南(二)

    摘要:允許將反序列化為沒有附加注釋元數(shù)據(jù)不可變的類。包的庫(kù)經(jīng)常會(huì)想支持多個(gè)版本的這樣做需要構(gòu)建一個(gè)為每個(gè)版本的支持工件它介紹了如何區(qū)分這些工件的問題看到像不支持添加額外的元數(shù)據(jù)依賴關(guān)系的想法來指定他們需要什么版本的。 1.Defining a Lagom build(定義一個(gè)Lagom構(gòu)建) 正如在Lagom構(gòu)建哲學(xué)中已經(jīng)討論過的那樣,使用Lagom,您可以自由地將所有服務(wù)組合在一個(gè)單獨(dú)的構(gòu)...

    import. 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<