Maven1-HelloWorld簡單入門

編寫POM(Project Object Model)

Maven項目的核心是pom.xml,它定義了項目的基本信息,用于描述項目如何構(gòu)建,聲明項目依賴

  1. 創(chuàng)建文件夾,名稱為hello-world
  2. 創(chuàng)建pom.xml文件,位于根目錄下
  3. 編輯pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.xikunqu.firstmvn</groupId>
    <artifactId>helloworld</artifactId>
    <version>1.0-SNAPSHOT</version>
    <name>Maven Hello World Project</name>
</project>

解析:

  • <??>中制定了xml文檔的版本和編碼方式
  • <project>是文檔的根元素,還聲明了一些POM相關(guān)的命名空間以及xsd元素,使用這些屬性可以讓第三方工具幫助我們快速編輯POM
  • groupId,artifactId和version定義了一個項目的基本坐標(biāo),在Maven中,任何jar,pom,war都是局域這些基本 坐標(biāo)進(jìn)行區(qū)分的
  • grouId定義了項目屬于哪個組,若googlecode上建立了一個myapp項目,groupld就應(yīng)該是com.googlecode.myapp
  • artifactId定義了當(dāng)前Maven項目在組中唯一的ID
  • version 制定了hello-world項目當(dāng)前的版本
  • name生命了一個對于用戶更為友好的名稱,不是必須的

編寫主代碼

項目主代碼會被導(dǎo)播到最終的構(gòu)建中,默認(rèn)情況下,Maven假設(shè)項目主代碼位于src/main/java目錄下

  1. 創(chuàng)建src/main/java目錄
  2. 在建好的目錄下創(chuàng)建文件com/xikunqu/firstmvn/helloworld/HelloWorld.java
package.com.xikunqu.firstmvn.helloworld;
public class HelloWorld
{
    public String sayHello(){
        return "Hello World";
    }
    public stacic void main(String[] args){
        System.out.print( new HelloWorld().sayHello());
    }
}
  1. 執(zhí)行編譯:mvn clean compile
    運行結(jié)果如下:
    運行結(jié)果

編寫測試代碼

  1. 建立目錄,src/test/java
  2. 由于要使用JUnit,所以先為項目添加一個JUnit依賴,修改pom.xml,添加如下代碼
<dependencies>
     <dependency>
         <groupId>junit</groupId>
         <artifactId>junit</artifactId>
         <version>4.7</version>
         <scope>test</scope>
     </dependency>
</dependencies>

解析:

  • dependencies元素下可以包含多個dependency元素以聲明項目的依賴
  • 這段聲明可以使Maven 自動下載junit-4.7.jar
  • scope為依賴范圍,表明該依賴值對測試有效
  1. 編寫測試類,測試sayHello()方法,檢查其返回值,在src/test/java下創(chuàng)建文件HelloWorldTest.java
package com.xikunqu.firstmvn.helloworld;
import static org.junit.Assert.assertEquals;
import org.junit.Test;
public class HelloWorldTest
{
    @Test
    public void testSayHello(){
        HelloWorld helloworld=new HelloWorld();
        String result=helloworld.sayHello();
        assertEquals("Hello World",result);
    }
}
  1. 執(zhí)行編譯:mvn clean test
    運行結(jié)果部分截圖如下:
    運行結(jié)果

打包和運行

在項目進(jìn)行編譯,測試之后,下一重要步驟就是打包

  1. 執(zhí)行命令:mvn clean package
    運行結(jié)果部分截圖如下:
    運行結(jié)果

    可以看到項目主代碼被打包為一個名為helloworld-1.0-SNAPSHOT.jar的文件,位于target目錄下。
  2. 目前為止,我們都沒有運行HelloWorld項目,默認(rèn)打包生成的jar是不能后直接運行的,因為帶有main方法的類不會被添加到manifest中,為了生成可執(zhí)行的jar文件,需要借助maven-shade-plugin,在pom.xml添加如下代碼:
<build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <version>1.2.1</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                        <configuration>
                            <transformers>
                                <transformer implementation="org.apache.maven.plugins.shade.resource.
                                     ManifestResourceTransformer">
                                    <mainClass>com.xikunqu.firstmvn.helloworld.HelloWorld</mainClass>
                                </transformer>
                            </transformers>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
  1. 再次執(zhí)行mvn clean package,構(gòu)建成功后,可以看見target目錄下存在兩個jar包,如下圖所示:
    jar包
  2. 執(zhí)行jar文件,如下圖所示:


    運行結(jié)果
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容