程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Java的項目構建對象Maven的設置裝備擺設和應用教程

Java的項目構建對象Maven的設置裝備擺設和應用教程

編輯:關於JAVA

Java的項目構建對象Maven的設置裝備擺設和應用教程。本站提示廣大學習愛好者:(Java的項目構建對象Maven的設置裝備擺設和應用教程)文章只能為提供參考,不一定能成為您想要的結果。以下是Java的項目構建對象Maven的設置裝備擺設和應用教程正文


1、Maven是甚麼

Maven是一個用java開辟的項目構建對象, 它能使項目構建進程中的編譯、測試、宣布、文檔主動化, 年夜年夜加重了法式員安排累贅。

2、裝置Maven

裝置maven異常簡略,拜訪Maven官方頁下載便可:http://maven.apache.org/download.cgi
下載完後設置裝備擺設M2_HOME情況變量, 然後終端運轉mvn --version, 看到准確的輸入提醒,Maven就裝置完成了。

3、Maven根本概念
Maven的焦點思惟是POM, 即Project Object Model(項目對象模子)。POM文件是以XML文件的情勢描寫一個Maven項目所用到的資本(源碼、依附、測試等)。下圖描寫了POM文件的構造, 和Maven是若何挪用POM文件的。

當履行一條Maven敕令時, 會傳入一個pom文件, Maven會在該pom外面的描寫的資本上履行

POM文件:

<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>
 <!-- The Basics -->
 <groupId>...</groupId>
 <artifactId>...</artifactId>
 <version>...</version>
 <packaging>...</packaging>
 <dependencies>...</dependencies>
 <parent>...</parent>
 <dependencyManagement>...</dependencyManagement>
 <modules>...</modules>
 <properties>...</properties>
 <!-- Build Settings -->
 <build>...</build>
 <reporting>...</reporting>
 <!-- More Project Information -->
 <name>...</name>
 <description>...</description>
 <url>...</url>
 <inceptionYear>...</inceptionYear>
 <licenses>...</licenses>
 <organization>...</organization>
 <developers>...</developers>
 <contributors>...</contributors>
 <!-- Environment Settings -->
 <issueManagement>...</issueManagement>
 <ciManagement>...</ciManagement>
 <mailingLists>...</mailingLists>
 <scm>...</scm>
 <prerequisites>...</prerequisites>
 <repositories>...</repositories>
 <pluginRepositories>...</pluginRepositories>
 <distributionManagement>...</distributionManagement>
 <profiles>...</profiles>
</project>

modelVersion是POM模子版本, 4.0.0支撐Maven2和3
Maven Coordinates(Maven坐標)

(1)groupId: 它是一個組織或許項目標獨一ID, 年夜多半情形下會應用項目標java包的根名作為groupID, 例如com.pastqing

(2)artifactId:它是正在構建的項目稱號, 例如一個付出體系artifactId是web-pay。artifactId 是Maven倉庫中groupId目次下的子目次名

(3)version:望文生義項目刊行的版本號

以上三項都是構建成果稱號的一部門, 在項目構建後會生成一個jar包,位於Maven倉庫的途徑就是MAVEN_REPO/com/pastqing/web-pay/1.0/web-pay-1.0.jar

4、一個用Maven構建的Hello World java項目

應用Maven插件archetype構建一個項目:
在終端中翻開任務目次
運轉敕令:

mvn archetype:generate

, 第一次運轉時比擬慢,緣由是第一次須要從Maven中心倉庫中下載相干項目原型。下載終了後,會選擇項目模子,和輸出groupId, artifactId,version等,構建終了後會有勝利提醒。
打包項目:切換到項目根目次,運轉mvn package。打包勝利以後,項目會生成一個target文件夾,外面有生成好的jar文件和class文件。
運轉jar文件:

java -cp target/helloWorld-1.0-SNAPSHOT.jar com.pastqing.App

至此一個最簡略Maven構建的java項目就完成了。

5、一個用Maven構建的java-web項目

生成一個web項目與生成java項目根本相似,只是用的模子分歧罷了。這裡不再論述。上面我們詳細說說若何應用Tomcat或許jetty插件運轉web項目。這裡我們以tomcat舉例。

Maven Tomcat插件裝置:  http://tomcat.apache.org/maven-plugin-2.2/ 
我們將以下插件信息參加到web項目中的POM文件中

<plugin>
  <groupId>org.apache.tomcat.maven</groupId>
  <artifactId>tomcat6-maven-plugin</artifactId>
  <version>2.2</version>
</plugin>
<plugin>
  <groupId>org.apache.tomcat.maven</groupId>
  <artifactId>tomcat7-maven-plugin</artifactId>
  <version>2.2</version>
</plugin>

如許我們集成了這個tomcat的Maven插件, 只須要一個敕令便可以安排、啟動辦事了。敕令以下:

mvn tomcat:run

(tomcat6)

mvn tomcat7:run

(tomcat7)

應用tomcat Maven插件主動安排到內部tomcat
以上主動安排,會應用Maven內嵌的Tomcat, 上面我們修正POM文件, 讓項目安排到內部的Tomcat中。

修正項目POM文件,添加辦事器設置裝備擺設信息

<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
  <url>http://localhost:8080/manager/text</url>
  <server>tomcat7</server>
  <username>admin</username>
  <password>admin</password>
</configuration>
</plugin>

個中server, username, password的值與%Maven_HOME中的setting.xml中的server, username, password逐個對應。

啟動內部tomcat, 運轉敕令mvn tomcat7:redeploy

6、若何用Maven構建多模塊項目

1.父POM

一切的Maven pom文件都繼續自一個父POM, 假如沒有指定父pom, 則該pom文件繼續自根POM。pom文件的集成關系以下圖所示:

可讓一個pom文件顯式地繼續另外一個pom文件。如許,可以經由過程修正公共父pom文件的設置來修正一切子pom文件的設置。這裡我們應用parent標簽來界說父pom。上面我們詳細搭建一個多模塊Mavne項目

2.構建項目目次構造

我們創立一個maven-web項目, 名字叫EducationCloud, 接上去我們在項目目次下創立幾個文件夾用來劃分我們的模塊。它們分離是Education-parent(父模塊), Education-core(營業), Education-entity(實體), Education-web(web辦事)

目次的劃分可以依據須要停止, 我的劃分如上

3.修正pom文件

我們用module標簽來停止劃分模塊。翻開根目次下的pom文件, 添加moudle標簽。

<?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.EducationCloud</groupId>
  <artifactId>EducationCloud</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>pom</packaging>
  <modules>
    <module>Education-parent</module>
    <module>Education-core</module>
    <module>Education-entity</module>
    <module>Education-web</module>
  </modules>
  <name>EducationCloud</name>
</project>

這裡我們說下packaging標簽:最多見的就是打包為jar, war了。任何一個Maven項目都須要界說pom文件中的packaging元素, 假如不聲明該元素, 則默許打包為jar, 假如界說值為war那末就打包為war包。假如值為pom,那末甚麼包都不生成(平日用於父模塊)。

給各個模塊添加parent標簽:
parent標簽用來界說父POM的坐標地位的, 界說以下:

<parent>
  <groupId>com.EducationCloud</groupId>
  <artifactId>EducationCloud-parent</artifactId>
  <version>1.0-SNAPSHOT</version>
  <relativePath></relativePath>
</parent>

groupId, aritfactId, version是慣例表現父pom地位信息的元素, relativePath是表現父pom地位的絕對途徑, 默許為../pom.xml, 這裡須要留意的是groupId, aritfactId, version必需與父pom文件中的對應起來

應用dependencyManagement治理項目一切依附
為了同一治理依附,我們在父項目模塊的pom文件中應用dependencyManagement來聲明項目標一切依附, 如許在其他的子項目中援用依附時便可以省略版本號的編寫, 修正起來也很輕易。
編寫**父項目模塊**educationCloud-parent的pom文件, 添加以下:
應用pluginManagement治理項目中的Maven插件
為了同一治理項目中的Maven插件, 如Maven編譯插件, 打包插件等及其設置裝備擺設信息, 在父項目 pom文件中添加pluginManagement來治理, 如許在一切子模塊中援用的插件都邑同一處置, 添加以下:

<pluginManagement>
  <plugins>
  <!-- complile插件的設置裝備擺設 -->
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-complier-plugin</artifactId>
      <version>3.3</version>
      <configuration>
        <source>1.7</source>
        <target>1.7</target>
        <encoding>UTF-8</encoding>
      </configuration>
    <plugin>
  </plugins>
</pluginManagement>

下面我們添加了maven編譯插件的設置裝備擺設,用jdk1.7編譯, 保留後我們可以在各個子模塊的Effective pom中看到響應的修正。

應用properties標簽界說常量:
我們將各個依附的版本號界說為分歧的常量,如許便利今後的修正:

<properties>
  <jdkVersion>1.7</jdkVersion>
  <servletVersion>3.1.0</servletVersion>
  <mysqlVersion>5.1.34</mysqlVersion>
  <junitVersion>4.12</junitVersion>
  <defaultEncoding>UTF-8</defaultEncoding>
</properties>

援用時用${jdkVersion}的情勢援用便可。

注,以上操作都可在IDE中操作, 加倍便利簡略。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved