1. 程式人生 > 實用技巧 >Maven - 專案搭建

Maven - 專案搭建

Maven - 專案搭建

!!!!!!!!!!!!!! IDEA配置 !!!!!!!!!!!!!!!!

!!!!!!!!!!!!!!!!!! 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/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.itheima</groupId>
  <artifactId>java_web</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>war</packaging>

  <name>java_web Maven Webapp</name>
  <!-- FIXME change it to the project's website -->
  <url>http://www.example.com</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.7</maven.compiler.source>
    <maven.compiler.target>1.7</maven.compiler.target>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
    </dependency>

    <dependency>
      <groupId>javax.servlet.jsp</groupId>
      <artifactId>javax.servlet.jsp-api</artifactId>
      <version>2.3.3</version>
      <scope>provided</scope>
    </dependency>

    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>provided</scope>
    </dependency>

  </dependencies>



  <build>
      <plugins>
        <plugin>
          <!--外掛在倉庫中的座標-->
          <groupId>org.apache.tomcat.maven</groupId>
          <artifactId>tomcat7-maven-plugin</artifactId>
          <version>2.2</version>
          <!--外掛配置dependencies-->
          <configuration>
            <!--埠號-->
            <port>8080</port>
            <!--專案的訪問地址-->
            <path>/</path>
            <!--預設編碼-->
            <uriEncoding>UTF-8</uriEncoding>
            <!--伺服器名-->
            <server>tomcat7</server>
          </configuration>
        </plugin>
      </plugins>
  </build>

</project>

我們回顧一下maven規範的目錄結構:

4.1 手動搭建maven專案

我們先使用手動的方式來建立maven專案

(1)在D盤下建立目錄mvnproject並進入該目錄,作為我們的操作目錄

(2)建立我們的maven專案,建立一個目錄project-java作為我們的專案資料夾,並進入到該目錄

(3)建立java程式碼(原始碼)所在目錄,即建立src/main/java

(4)建立配置檔案所在目錄,即建立src/main/resources

(5)建立測試原始碼所在目錄,即建立src/test/java

(6)建立測試存放配置檔案存放目錄,即src/test/resources

(7)在src/main/java

中建立一個包(注意在windos資料夾下就是建立目錄)com/itheima,在該目錄下建立Demo.java檔案,作為演示所需java程式,內容如下

package com.itheima;

public class Demo{
	public String say(String name){
		System.out.println("hello "+name);
		return "hello "+name;
	}
}

(8)在src/test/java中建立一個測試包(目錄)com/itheima,在該包下建立測試程式DemoTest.java

package com.itheima;

import org.junit.*;
public class DemoTest{
	
	@Test
	public void testSay(){
		Demo d = new Demo();
		String ret = d.say("maven");
		Assert.assertEquals("hello maven",ret);
	}
	
}

(9)在project-java/src下建立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.itheima</groupId>
    <artifactId>project-java</artifactId>
    <version>1.0</version>
    <packaging>jar</packaging>

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
    </dependencies>

</project>

通過前面的操作,我們已經搭建好了maven的專案結構,下面要通過maven來構建我們的專案

maven的構建命令以mvn開頭,後面新增功能引數,可以一次性執行多個命令,用空格分離

mvn compile:編譯

mvn clean:清理

mvn test:測試

mvn package:打包

mvn install:安裝到本地倉庫

下面我們來進行操作:

(1)在專案project-java所在的DOS命令視窗下執行mvn compile進行原始碼編譯,當然首次執行需要先下載相關外掛

編輯結果如下:

編譯完成後在專案project-java下多了一個目錄target,在這個目錄下就存放的是maven編譯好的一些東西

我們可以進入到target目錄檢視

其中生成的classes目錄就是編譯好的位元組碼檔案

(2)當然如果我們想清理掉這些東西,我們只需執行mvn clean命令即可,清理掉後target目錄也就消失了

(3)如果我們要執行測試包中的測試程式,我們只需執行mvn test命令即可

此時在看target目錄會多一些東西

其中產生的test-classes就是測試程式碼的位元組碼檔案,surefire-reports是它產生的測試報告

(4)使用mvn package命令進行打包,如下

在生成的target目錄中可以看到打包的結果

當然,如果仔細看DOS視窗輸出的我們會發現,mvn package命令的時候maven會把前面兩個命令mvn compile,mvn test都執行一遍

(5)使用mvn install命令進行安裝,將專案打好的包存入本地倉庫

仔細檢視輸出會發現mvn install命令執行的時候也會將前面的命令都執行一遍

此時我們可以去本地倉庫中查詢,如何查詢?這個很重要

maven是按照groupId/artifactId/version的結構在本地倉庫進行儲存

前面我們是通過手動的方式建立的maven專案,相對來說比較的麻煩,maven本身也是這樣覺得的,因此maven本身就給我們提供了相關的外掛來幫助我們快速構建專案,當然這是一些命令:

這些命令不用記,因為實際操作的時候也用不著,因為實際開發的時候我們基本都是用過一些IDE工具來進行專案開發,這些IDE工具基本都集成了Maven,我們操作起來非常簡單。

4.2 IDEA工具搭建maven專案

前面學習的基本都是通過命令來構建和管理專案,但是這在實際開發過程中基本不常用,常用的是通過相關IDE工具來進行專案的構建和管理,因此我們使用IDEA工具進行maven專案的搭建

需要注意的是:Maven和IDEA在版本上存在一些相容性問題,因為要合理的選擇Maven和IDEA的版本,本課程中提供安裝maven-3.6.1版本是可用的

4.2.1 不使用原型建立專案

(1)在IDEA中配置Maven

(2)建立maven工程

(3)填寫本專案的座標

(4)檢視各目錄顏色標記是否正確

(5)IDEA右側有一個maven管理介面,可點開檢視

(6)在專案的pom.xml檔案中新增專案資源依賴

<dependencies>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
    </dependency>
</dependencies>

(7)建立原始碼:com.itheima.Demo

package com.itheima;

/**
 * Created by 傳智播客*黑馬程式設計師.
 */
public class Demo{
    public String say(String name){
        System.out.println("hello "+name);
        return "hello "+name;
    }
}

(8)建立測試程式碼:com.itheima.DemoTest

package com.itheima;

import org.junit.Assert;
import org.junit.Test;

/**
 * Created by 傳智播客*黑馬程式設計師.
 */
public class DemoTest{

    @Test
    public void testSay(){
        Demo d = new Demo();
        String ret = d.say("maven");
        Assert.assertEquals("hello maven",ret);
    }

}

然後可以進行測試執行

執行的時候可以編輯執行模板:

然後點選執行:

4.2.2 使用原型建立專案

  • 首先我們來看普通的java工程如何建立:

(1)建立maven專案的時候選擇使用原型骨架

(2)建立完成後發現通過這種方式缺少一些目錄,如下圖

我們需要手動去補全目錄,並且要對補全的目錄進行標記,切記

  • 然後我們在來看web工程如何建立:

(1)選擇web對應的原型骨架

有很多的webapp原型骨架,選擇哪個基本都差不多,包括前面建立普通專案也是一樣,quickstart原型也有很多

(2)和前面建立普通專案一樣,通過原型建立web專案得到的目錄結構是不全的,因此需要我們自行補全,同時要標記正確,最終需要得到如下結構

(3)web工程建立好之後需要啟動執行,需要使用一個tomcat外掛來執行我們的專案,在pom.xml中新增外掛的座標即可,最終改好的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/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.itheima</groupId>
  <artifactId>web01</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>war</packaging>

  <name>web01 Maven Webapp</name>
  <url>http://www.example.com</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <build>
    <finalName>web01</finalName>
    <plugins>
      <plugin>
        <groupId>org.apache.tomcat.maven</groupId>
        <artifactId>tomcat7-maven-plugin</artifactId>
        <version>2.1</version>
      </plugin>
    </plugins>
  </build>
</project>

(4)外掛配置好後,在IDEA右側maven-project操作面板上可以看到該外掛,並且可以利用該外掛啟動專案

執行後該外掛會給我們一個可執行地址:

如果我們想更換埠,只需要在pom.xml中配置該外掛即可

<plugins>
    <plugin>
        <groupId>org.apache.tomcat.maven</groupId>
        <artifactId>tomcat7-maven-plugin</artifactId>
        <version>2.1</version>
        <configuration>
            <port>80</port>
        </configuration>
    </plugin>

(5)同時為了執行方便我們也可以建立執行模板: