【JavaEE學習筆記】Maven

Maven

A.概述

1.爲什麼使用Maven

eclipse功能已經非常強大,創建項目、編譯、打包、導出、發佈

這些功能eclipse都能做,但是依賴大量的手工操作,存在以下問題:

a.jar包管理混亂

在開發項目的過程中,會使用一些開源框架、第三方工具等

這些都是以jar包的方式被引用

並且有些jar包還回依賴其他的jar包

所有這些相關的jar包都會作爲項目的依賴

b.版本管理混亂

在管理這些jar包過程中,jar包的版本往往是最令人頭疼的問題

選擇一個jar包版本,需要考慮它所依賴的jar包是否支持這個版本

並且還需要確認依賴它的jar包能不能對這個版本兼容

c.添加jar隨意

需要用到第三方jar時,隨便下載就添加到目錄中了,沒有記錄

造成後期文檔記錄頻繁

d.項目配置不統一

每個Java項目的目錄結構都沒有一個統一的標準

配置文件到處都是

單元測試代碼到底應該放在哪裏,也沒有一個權威的規範

相關jar包的版本也不同意,導致後期維護困難重重

更多時候都是開發者的自由發揮

每個人有自己的風格,這並不十分適合團隊協作

2.什麼是Maven?

是一個項目管理工具,負責管理項目開發過程中的幾乎所有東西

主要用於項目構建,依賴管理,項目信息管理

Maven爲開發者提供了一套完整的構建生命週期框架

開發團隊幾乎不用花多少時間就能夠自動完成工程的基礎構建配置

因爲Maven使用了一個標準的目錄結構和一個默認的構建生命週期

在有多個開發團隊環境的情況下

Maven能夠在很短的時間內使得每項工作都按照標準進行

因爲大部分的工程配置操作都非常簡單並且可複用

在創建報告、檢查、構建和測試自動配置時

Maven可以讓開發者的工作變得更加簡單

3.Maven的功能

a.構建

比如生成class,jar,war或者ear文件

b.生成文檔

比如生成javadoc,網站文檔

c.生成報告

比如junit測試報告

d.生成依賴類庫

生成文檔,說明項目對其他軟件的依賴

e.有關SCM

SCM(Software Configuration Management)

軟件配置管理,比如版本控制,bug管理等

f.發佈

生成供發佈的分發包

比如生成struts2的分發包,提供交給用戶使用

g.部署

web應用程序,自動部署到指定的服務器上

4.項目構建過程

清理項目,編譯項目,測試項目,生成測試報告,打包項目,部署項目


理想的項目構建是高度自動化,跨平臺,可重用的組件,標準化的

使用maven就可以幫我們完成上述所說的構建過程

B.Maven的使用

1.步驟

a.下載maven的zip,解壓到某個目錄

b.配置環境變量



命令提示框輸入mvn -version 正常顯示maven以及jdk版本


c.配置本地倉庫

拷貝maven安裝目錄\conf下的settings.xml文件到

C:\Users\Administrator\.m2路徑

修改其中的本地倉庫路徑(默認爲當前目錄下,存放的jar包,佔內存):

<localRepository>G:/mavenRepository</localRepository>

2.安裝目錄簡介

bin:包含了mvn運行的腳本

boot:文件 plexus-classworlds-2.5.2.jar

           是一個類加載器框架,Maven使用他加載自己的類庫

conf:settings.xml文件

lib:Maven運行時需要的Java類庫


3.創建一個Maven項目,並編譯

a.創建項目根文件夾


b.在Maven01文件夾中創建pom.xml文件,並編輯內容


pom.xml中的內容

<?xlm 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">
	<!-- 所有的Maven項目都必須配置四個配置項 -->
	<modelVersion>4.0.0</modelVersion>
	<!-- groupId項目名的項目組,默認是包名 -->
	<groupId>org.xxxx.hello</groupId>
	<!-- artifactId是項目中的某一個模塊,默認命名方式是"項目名-模塊名" -->
	<artifactId>hello-first</artifactId>
	<!-- version指的是版本,這裏使用的是Maven的快照版本 -->
	<version>SNAPSHOT-0.0.1</version>
</project>

c.創建java文件夾

Maven項目規定,所有的*.java文件必須放在src目錄下的main的java目錄中

在Maven01項目根目錄中創建一個src目錄

然後在src目錄中創建main目錄

在main目錄中創建java文件夾


d.編寫java類文件

在java文件夾下創建包和類,包就是剛配置爲建中的groupId


編寫Hello.java文件

package org.xxxx.hello;

public class Hello {
	public static void main(String[] args) {
		System.out.println("Hello Maven!");
	}
}

e.編譯

通過命令行進入pom.xml根目錄下

使用mvn  compile進行編譯


首次加載,需要連接網絡下載jar包到本地倉庫

後面就直接從本地倉庫中加載,如果沒有,再連接網絡下載


出現此提示,即編譯成功,如果有error,根據錯誤信息修改

我們看一下配置的本地倉庫裏的內容


是常用的一些jar包,並且還有不同的版本

編譯完成後,在項目根目錄會生成一個target文件夾


打開target文件夾,可以看到裏面有一個classes文件夾

classes文件夾存放的就是編譯成功後生成的.class文件

f.清除編譯結果

mvn clean


也要下載相應的資源


清除成功

g.生成可執行jar包

在pom.xml添加相應的代碼,完整代碼如下

<?xlm 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">
	<!-- 所有的Maven項目都必須配置四個配置項 -->
	<modelVersion>4.0.0</modelVersion>
	<!-- groupId項目名的項目組,默認是包名 -->
	<groupId>org.xxxx.hello</groupId>
	<!-- artifactId是項目中的某一個模塊,默認命名方式是"項目名-模塊名" -->
	<artifactId>hello-first</artifactId>
	<!-- version指的是版本,這裏使用的是Maven的快照版本 -->
	<version>SNAPSHOT-0.0.1</version>
	
	<build>
    <plugins>
      <plugin>  
        <groupId>org.apache.maven.plugins</groupId>  
        <artifactId>maven-jar-plugin</artifactId>  
        <version>3.0.2</version>  
        <configuration>  
            <archive>  
                <manifest>  
                    <addClasspath>true</addClasspath>  
                    <classpathPrefix>lib/</classpathPrefix>  
					<!-- 這裏是main方法所在的全路徑名 -->
                    <mainClass>org.xxxx.hello.Hello</mainClass>  
                </manifest>  
            </archive>  
        </configuration>  
		</plugin> 
	</plugins> 
	</build>

</project>

執行mvn package


等待下載資源


執行成功,可以查看jar包


接下來用java -jar命令執行該jar包(要在jar包所在目錄執行)


4.Maven的標準工程結構

a.sec/mian/java:存放項目的java文件

b.src/main/resources:存放項目的資源文件,如配置文件

c.src/test/java:存放所有的測試的java文件

d.src/test/resources:存放測試用的資源文件

e.target:項目輸出位置

f.pom.xml文件

5.Maven倉庫

在Maven的術語中,倉庫是一個位置,例如目錄

可以存儲所有工程jar文件,library jar文件,插件或任何其他的工程指定文件

Maven倉庫的類型

a.本地(local)

是用戶機器上的一個文件夾

在第一次運行任何maven命令的時候創建的

保存工程的所有依賴(library jar,plugin jar等)

Maven會自動下載所有依賴的jar文件到本地倉庫中

本地倉庫默認被創建在%USER_HOME%/.m2目錄下

可以通過前面介紹的方法修改本地倉庫的位置

b.遠程(remote)

如果Maven在中央倉庫中也找不到依賴的庫文件

它會停止構建過程並輸出錯誤信息到控制檯

爲避免這種情況,Maven提供了遠程倉庫的概念

它是開發人員自己定製的倉庫

包含了所需要的代碼庫或者其他工程中用到的jar文件

c.中央(central)

是由Maven社區提供的倉庫,其中包含了大量常用庫

這個倉庫由Maven社區管理,不需要配置

需要通過網絡才能訪問,是一個特殊的遠程倉庫

中央倉庫在lib/maven-modle-builder-3.5.2.jar配置

org\apache\maven\project\pon-4.0.0.xml文件中

定義了中央倉庫的地址https://repo.maven.apache.org/maven2


6.Maven中庫文件查找順序

a.在本地倉庫中搜索

如果找不到,執行步驟2,如果找到了,則執行其他操作

b.在中央倉庫中搜索

如果找不到,並且有一個或多個遠程倉庫已經設置,則執行步驟4

如果找到了,則下載到本地倉庫中以備將來引用

c.如果遠程倉庫沒有被設置

Maven將簡單的停滯處理並拋出錯誤,無法找到依賴的文件

d.在一個或多個遠程倉庫中搜索依賴的文件

如果找到則下載到本地倉庫一輩將來引用

否則Maven將停止處理並拋出錯誤,無法找到依賴的文件

7.座標

Maven的世界中,擁有數量非常巨大的構件

也就是我們平時用的一些jar,war等文件

Maven定義了這樣一組規則:世界上任何一個構件都可以使用Maven座標唯一標識

Maven座標的元素包括group,artifactid,version,packaging,classifiner

a.groupId

定義當前Maven項目隸屬的實際項目

表示方式與java包名的表示方式類似,通常與域名反向一一對應

b.artifactId

該元素定義實際項目中的一個Maven項目/模塊

c.version

版本【可以分成穩定版本和快照版本】

d.packaging

打包方式,如jar,war

e.calssifier

不能直接定義,用來表示構件到底用於何種jdk版本

8.pom,依賴

a.pom

POM(Project Object Model):Maven的核心文件

位於每個工程的根目錄中,指示Maven如何工作的元數據文件

類似於Ant中的build.xml文件

b.依賴(Dependency)

爲了能夠構建或運行,Java工程一般會依賴其它的包

在Maven中,這些被依賴的包就被稱爲dependency

一般是其他工程的座標,依賴具有傳遞性

9.pom.xml常用節點

	<!-- 聲明項目POM模型版本 -->
	<modelVersion>4.0.0</modelVersion>
	<!-- 項目全球唯一標識符,通常使用全限定的包名區分該項目和其他項目
	構建時生成的路徑也是由此生成 -->
	<groupId>org.xxxx.hello</groupId>
	<!-- 構建模塊的標識符,和groupId一起唯一標識一個構件 -->
	<artifactId>hello-first</artifactId>
	<!-- 產生的構建類型 如jar,war,ear,pom -->
	<packaging>jar</packaging>
	<!-- version指的是版本,這裏使用的是Maven的快照版本 -->
	<version>SNAPSHOT-0.0.1</version>
	
	<!-- Maven屬性配置,如版本信息,以便以後使用 -->
	<properties>
		<junit.version>2.4</junit.version>
	</properties>
	
	<!-- 該元素描述了項目相關的所有依賴,自動從項目定義的倉庫中下載 -->
	<dependencies>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>${junit.version}</version>
			<type>jar</type>
			<!-- 依賴範圍,在項目發佈過程中,幫助決定哪些構件被包括進來,如
				compile:默認範圍,用於編譯
				test:用於test任務時使用
			-->
			<scope>test</scope>
		</dependency>
	</dependencies>
	
	<!-- 該元素描述了項目構建需要的插件,自動從項目定義的插件倉庫中下載 -->
	<build>
		<plugins>
			<plugin>  
				<groupId>org.apache.maven.plugins</groupId>  
				<artifactId>maven-jar-plugin</artifactId>  
				<version>3.0.2</version>  
				<configuration>
					<soure>1.8</soure>
					<target>1.8</target>
				</configuration>  
			</plugin> 
		</plugins> 
	</build>

10.Maven常用命令

a.編譯源代碼:mvn compile

b.清除產生的項目:mvn clean

c.運行測試:mvn test

d.產生site:mvn site

e.打包:mvn package

f.在本地Repository中安裝jar:mvn install

g.發佈到遠程倉庫:mvn deploy

11.Maven生命週期

就是對編譯、測試、打包、部署等過程的一個抽象與統一

包含項目清理、初始化、編譯、測試、打包、集成測試、驗證、部署、站點生成

有三套生命週期,而且是相互獨立的,分別是clean default site

命令行的輸入就應對了生命週期

mvn package:表示執行默認生命週期階段package

default:構建的核心部分,編譯、測試、打包、部署等

site:生成項目報告、站點、發佈站點

可僅調用mvn clean清理工作目錄

或者僅調用mvn site生成站點

或者直接運行mvn clean install site運行所有三套生命週期

每個生命週期又包含一些階段(phase)

這些階段是有序的,每個階段蘊含一個或多個目標(goal)

並且後面的階段依賴於前面的階段

我們和Maven最直接的交互方式就是調用這些生命週期階段

每一個目標任務實際上是由插件完成的

12.Maven插件

Maven的生命週期與插件相互綁定,用以完成實際的構建任務

具體而言,是生命週期的階段和插件的目標互相綁定,已完成某個具體的構建任務

compile這一任務,是將default生命週期的compile階段

和maven-compiler-plugin這一插件的compile目標進行綁定

其實這個目標本身什麼都不會做,真正編譯代碼的是compile插件

插件也是基於座標保存在Maven倉庫當中的

在用到插件的時候,會先從本地倉庫查找

如果沒有,則從遠程倉庫查找插件並下載到本地倉庫

常用於:

a.創建jar文件

b.創建war文件

c.編譯代碼文件

d.進行代碼單元測試

e.創建項目文檔

f.創建項目報告

C.Maven深入

1.在eclipse中配置Maven

eclipse默認支持Maven,自帶maven3.2.1

如果想使用1最新的3.5.0,可以如下配置

window->perferences->maven->Installations


在Preferences-->Maven-->User Settings中

點擊Update Settings,加載更改後的私有settings.xml


2.創建Maven web project

a.開啓eclipse,右鍵new->other


b.選擇maven project

顯示創建maven項目的窗口,勾選如圖所示,Create a simple project


c.輸入maven項目的基本信息


d.完成maven項目的創建


e.選擇項目,右鍵選擇Properties,進入屬性頁面


選擇java版本爲1.8,去掉web項目,點擊應用

然後再勾選上web應用,選擇版本爲3.0


下方出現一個連接,點擊


按圖中填寫,點擊ok


f.在src/main/java下新建package,然後創建Servlet

報錯,編輯pom.xml下載javax組件


同時需要在pom.xml添加

<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>org.xxxx.login</groupId>
  <artifactId>Login</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>war</packaging>
  
  <dependencies>
  	<dependency>
  		<groupId>javax.servlet</groupId>
  		<artifactId>javax.servlet-api</artifactId>
  		<version>3.0.1</version>
  		<!-- 僅編譯有效 -->
  		<scope>provided</scope>
  	</dependency>
  	
  	<dependency>
  		<groupId>javax.servlet.jsp</groupId>
  		<artifactId>javax.servlet.jsp-api</artifactId>
  		<version>2.2.1</version>
  		<scope>provided</scope>
  	</dependency>
  </dependencies>
  
</project>

g.編輯jsp和servlet

jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>登錄頁面</title>
</head>
<body>
	<form action="LoginServlet" method="post">
		用戶名:<input type="text" name="username" />
		<input type="submit" value="提交" />
		<br>
		${result}
	</form>
</body>
</html>

servlet

package org.xxxx.web;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/LoginServlet")
public class LoginServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// 設置編碼
		request.setCharacterEncoding("utf-8");
		response.setContentType("text/html;charset=utf-8");
		
		// 獲取參數
		String username = request.getParameter("username");
		System.out.println(username);
		// 判斷
		if (!(username == null || username.equals(""))) {
			if (username.equals("zhangsan")) {
				request.getSession().setAttribute("result", "用戶名正確");
			} else {
				request.getSession().setAttribute("result", "用戶名不存在");
			}
		} else {
			request.getSession().setAttribute("result", " ");
		}
		request.getRequestDispatcher("login.jsp").forward(request, response);
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);
	}

}

h.編譯並運行

右鍵工程->Debug->Debug Configureations


選擇工程,在goals中填寫clean package,點擊debug,查看控制檯


刷新工程


將該war包拷貝到tomcat的webapps目錄下

點擊bin目錄下的startup.bat,啓動tomcat


3.自動部署至Tomcat

a.Tomcat的用戶及權限配置

conf目錄下,找到tomcat-users.xml,添加manager權限的用戶

  <role rolename="admin-gui"/>
  <role rolename="admin-script"/>
  <role rolename="manager-gui"/>
  <role rolename="manager-script"/>
  <role rolename="manager-jmx"/>
  <role rolename="manager-status"/>
  <user username="admin" password="123456" roles="manager-gui,manager-script,
  manager-jmx,manager-status,admin-script,admin-gui"/>

b.私有的setting.xml

在<servers>節點中添加tomcat下配置的用戶信息

id可以任意填寫,但username和password必須和a一致

    <server>
      <id>tomcat8</id>
      <username>admin</username>
      <password>123456</password>
    </server>

c.項目的pom.xml中配置

	<build>
		<plugins>
			<plugin>
				<groupId>org.apache.tomcat.maven</groupId>
				<artifactId>tomcat7-maven-plugin</artifactId>
				<version>2.1</version>
				<configuration>
					<url>http://localhost:8080/manager/text</url>
					<!-- 必須和setting.xml中的id一致 -->
					<server>tomcat8</server>
				</configuration>
			</plugin>
		</plugins>
	</build>

d.使用mvn tomcat7:redeploy進行部署

首先得啓動tomcat


查看控制檯


查看webapps目錄


打開瀏覽器,自行驗證結果

D.Maven繼承和聚合

1.Maven繼承

在項目開發的過程中,可能多個模塊獨立開發

但是多個模塊可能依賴相同的元素,不如說每個模塊都需要junit

繼承特性能夠幫助抽取各模塊相同的依賴和插件等配置

在簡化POM的同時,還能夠促進各個模塊配置的一致性

繼承能複用父模塊的配置,如groupId等

同時提供項目的一致性管理,如依賴版本等

2.父模塊

聲明各個子項目的配置:如groupId,依賴版本,依賴管理,插件聲明等

實現一次聲明,多次使用

其package必須是pom類型,同時無需src等目錄,因爲不包含項目文件

<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>org.xxxx.dmeo</groupId>
	<artifactId>Maven</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>pom</packaging>
	<properties>
		<junit.version>4.12</junit.version>
		<maven.compiler.version>3.7.0</maven.compiler.version>
	</properties>
	<!-- 僅僅聲明,不會給父項目和子項目引入 具體依賴,同一管理版本 -->
	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>junit</groupId>
				<artifactId>junit</artifactId>
				<version>${junit.version}</version>
			</dependency>
		</dependencies>
	</dependencyManagement>

	<modules>
		<module>sample-first</module>
		<module>MavenSon</module>
	</modules>

	<build>
		<pluginManagement>
			<plugins>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-compiler-plugin</artifactId>
					<version>${maven.compiler.version}</version>
					<configuration>
						<source>1.8</source>
						<target>1.8</target>
					</configuration>
				</plugin>
			</plugins>
		</pluginManagement>
	</build>

</project>

3.子模塊

聲明特有的配置,如artifactId,依賴聲明等

其package通常是非porn類型,同時需要src等目錄,因爲包含文件塊

<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>
	<parent>
		<groupId>org.xxxx.dmeo</groupId>
		<artifactId>Maven</artifactId>
		<version>0.0.1-SNAPSHOT</version>
	</parent>
	<artifactId>MavenSon</artifactId>
	<packaging>pom</packaging>
	<url>http://maven.apache.org</url>
	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
	</properties>
	<dependencies>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<scope>test</scope>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

</project>

4.Maven聚合

能夠把項目的各個模塊聚合在一起構建,方便快速構建

想要一次構建兩個項目,而不是到兩個模塊的目錄下分別執行mvn命令

Maven的聚合就是爲該需求服務的

爲了方便用戶構建項目,通常將聚合模塊放在項目目錄的最頂層

其他模塊則作爲聚合模塊的子目錄存在

5.聚合模塊

通過該模塊構建所有包含的模塊

其package通常是pom類型,同時無需src等目錄,因爲不包含項目文件

modules元素是實現聚合的最核心的配置

可以聲明任意數量的module元素來實現元素的聚合

現有的實際項目往往是一個POM既是聚合POM又是父POM

這麼做主要是爲了方便

  <!– 平行結構使用,如果是父子結構則無需../-->
  <modules>
    <module>../MavenSon</module>    
  </modules>

6.區別

a.對聚合模塊來說

它知道有哪些被聚合的模塊

但那些被聚合的模塊不知道這個聚合模塊的存在

b.對於繼承關係父POM來說

它不知道有哪些子模塊繼承與它

但那些子模塊都必須知道自己的父POM是什麼

7.共同點

a.聚合 POM與繼承中父POM的 packaging都是pom

b.聚合模塊與繼承中父模塊除了POM外都沒有實際的內容

E.Nexus私服

1.概述

有些公司都不提供外網給項目組人員

不能使用maven訪問遠程的倉庫地址

有必要在局域網裏找一臺有外網權限的機器搭建私服

公司網速比較慢,通過公司的私服來獲取jar包比較快

內部的的一些jar包放在私服上,比較方便的大家使用

通過建立自己的私服,就可以降低中央倉庫負荷

節省外網寬帶、加速Maven構建、自己部署構件等


2.什麼是私服

是一種特殊的遠程服務器,代理廣域網上的遠程倉庫,供局域網內Maven用戶使用

需要下載maven構件時候, 先從私服請求

不存在則從外部遠程倉庫下載,緩存到私服後供下載

一些無法從外部下載的構件,可以上傳到私服供下載使用


3.目錄文件功能

解壓nexus


該目錄包含了Nexus運行所需要的文件,如啓動腳本、依賴jar包等

4.使用步驟(管理員身份運行)

a.JDK  Maven等環境配置正確後,下載nexus對應版本

b.拷貝到目錄下,執行bin目錄下命令:nexus.exe /run

c.啓動後訪問http://localhost:8081

d.在右上角有個Log in 的超鏈接點擊登錄,默認用戶名是 admin 密碼是 admin123

5.問題

a.停止Nexus Ctrl+C

b.端口衝突

默認端口8081被佔用,或者想使用其他端口開放Nexus服務

則編輯安裝目錄下conf文件夾的nexus-default.properties

把屬性application-port改成其他端口號,然後保存該文件,重啓Nexus便可

c.安裝爲系統服務

運行nexus.exe /install nexus命令

這個時候服務列表裏會出現對應的服務。

可以開機運行或使用命令運行:net start nexus

6.單獨項目配置從私服下載:pom.xml

<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>org.xxxx.demo</groupId>
	<artifactId>Login</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>war</packaging>
	<!-- 配置公共私服依賴下載,即代理中央倉庫 -->
	<repositories>
		<repository>
			<id>nexus</id>
			<name>nexus</name>
			<url>http://localhost:8081/repository/maven-public/</url>
			<releases>
				<enabled>true</enabled>
			</releases>
			<snapshots>
				<enabled>true</enabled>
			</snapshots>
		</repository>
	</repositories>
	<!-- 插件倉庫配置供插件下載 -->
	<pluginRepositories>
		<pluginRepository>
			<id>nexus</id>
			<name>nexus</name>
			<url>http://localhost:8081/repository/maven-public/</url>
			<releases>
				<enabled>true</enabled>
			</releases>
			<snapshots>
				<enabled>true</enabled>
			</snapshots>
		</pluginRepository>
	</pluginRepositories>

</project>

7.對所有maven項目均有效下載配置:settings.xml

	<profiles>
		<profile>
			<id>nexusRes</id>
			<repositories>
				<repository>
					<id>nexus</id>
					<name>Nexus epository</name>
					<url>http://localhost:8081/repository/maven-public/</url>
					<layout>default</layout>
					<snapshotPolicy>always</snapshotPolicy>
				</repository>
			</repositories>
		</profile>
	</profiles>
	<activeProfiles>
		<activeProfile>nexusRes</activeProfile>
	</activeProfiles>

8.登錄私服權限認證配置:settings.xml

	<!--nexus默認是需要登陸操作的,在此配置權限認證信息
	id必須分別對應pom.xml中<distributionManagement>元
	素中release和snapshot的id -->
	<servers>
		<server>
			<id>releases</id>
			<username>admin</username>
			<password>admin123</password>
		</server>
		<server>
			<id>snapshots</id>
			<username>admin</username>
			<password>admin123</password>
		</server>
	</servers>

9.發佈構件到私服

發佈非當前項目構件:命令行方式

mvn deploy:deploy-file

-DgroupId=oracle

-DartifactId=oracle

-Dversion=0.0.0

-Dpackaging=jar

-Dfile=e:\ojdbc6.jar

-Durl=http://localhost:8081/repository/maven-releases/

-DrepositoryId=releases

注意:repositoryId 是settings.xml中配置的server的id


發佈了106 篇原創文章 · 獲贊 135 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章