1. 程式人生 > >Maven 環境配置、安裝、 部署、 本地倉庫、 SCM

Maven 環境配置、安裝、 部署、 本地倉庫、 SCM

http://maven.apache.org/plugins/maven-release-plugin/

1.         安裝JDK,設定環境變數JAVA_HOME classpath path

2.         設定maven的path:E:\Program Files\apache-maven-3.0.4\bin

3.         驗證是否安裝成功:cmd ->mvn –v

4.         Eclipse安裝外掛

HELP  à install Newsoftware à

http://m2eclipse.sonatype.org/sites/m2e

http://m2eclipse.sonatype.org/sites/m2e-extras

接下來使用Eclipse的maven構建一個web專案,以構建SpringMVC專案為例:

1.3.1.1.       選擇建立Maven Project

選擇File -> New -> Other,在New視窗中選擇 Maven -> Maven Project。點選newxt。

1.3.1.2.       選擇專案路徑

Use default Workspace location預設工作空間。

1.3.1.3.       選擇專案型別

在Artifact Id中選擇maven-archetype-webapp

1.3.1.4.       輸入Group ID和 Artifact ID,以及Package

Group ID一般寫大專案名稱。ArtifactID是子專案名稱。

例如spring的web包,Group ID:org.springframework,artifactId:spring-web。

Package是預設給你建一個包,不寫也可以。

1.3.1.5.       剛建立好後的檔案結構如下圖

如果這裡顯示的內容多,一般是Filters設 置的問題。或perspective為JavaEE模式,改成Java模 式就可以了。

接下來就需要更改好多配置了。

1.3.2.1.       新增Source資料夾

接下來需要新增src/main/java,src/test/java ,src/test/resources三個資料夾。右鍵專案根目錄點選New -> Source Folder,

建出這三個資料夾。注意不是建普通的Folder,而是Source Folder。

1.3.2.2.       更改class路徑

右鍵專案,Java Build Path -> Source

下面應該有4個資料夾。src/main/java,src/main /resources,src/test/java ,src/test/resources。

雙擊每個資料夾的Output folder,選擇路徑。

src/main/java,src/main/resources,選擇target /classes;

src/test/java ,src/test/resources,選擇target/test-classes;

選上Allow output folders for source folders.

在此處還要更改:

更改資料夾顯示的順序:點選Order and Export。

更改JDK版本:在Libraries雙擊JRE System Library,要1.6版本。

1.3.2.3.       把專案變成Dynamic Web專案

 2.3.1 右鍵專案,選擇ProjectFacets,點選Convert to faceted from

更改Dynamic Web Module的Version為2.5。(3.0為Java7的)。

如果提示錯誤,可能需要在Java Compiler設定Compiler compliance level 為1.6。或者需要在此視窗的Java的Version改成1.6。

點選Further configuration available…,彈出Modify Faceted Project視窗

此處是設定web.xml檔案的路徑,我們輸入src/main/webapp。

Generate web.xml deployment descriptor自動生成web.xml檔案,可選可不選。

         上面步驟設定完成後,點選OK,Properties視窗會關 閉,在右鍵專案開啟此視窗。在左側列表中會出現一個Deployment Assembly,點選進去後,如下圖:

此處列表是,部署專案時,檔案釋出的路徑。

1,我們刪除test的兩項,因為test是測試使用,並不需要部署。

2,設定將Maven的jar包釋出到lib下。

Add -> JavaBuild Path Entries -> Maven Dependencies -> Finish

設定完成效果圖

使用Maven POMeditor開啟專案中的pom.xml檔案,選擇Dependencies,在Dependencies欄目點選Add進行,首先彈出一個搜尋按鈕,例 如輸入jsf,就會自動搜尋關於JSF相關的jar包,我們選擇2.0.4版本的jsf。將jsf包全部新增進 來。需要新增的其他jar包有:junit、jstl。或者點選pom.xml直接編輯pom.xml檔案。這樣可以直接copy過來 dependencies內容。

    我們的pom.xml檔案可直接複製下面的內容。

<projectxmlns="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>RulesMaven</groupId>

  <artifactId>RulesMaven</artifactId>

  <packaging>war</packaging>

  <version>0.0.1-SNAPSHOT</version>

  <name>RulesMavenMaven Webapp</name>

  <url>http://maven.apache.org</url>

  <dependencies>

    <dependency>

      <groupId>junit</groupId>

      <artifactId>junit</artifactId>

      <version>3.8.1</version>

      <scope>test</scope>

    </dependency>

    <dependency>

           <groupId>com.sun.faces</groupId>

           <artifactId>jsf-api</artifactId>

           <version>2.0.4-b09</version>

       </dependency>

       <dependency>

           <groupId>com.sun.faces</groupId>

           <artifactId>jsf-impl</artifactId>

           <version>2.0.4-b09</version>

       </dependency>

       <dependency> 

           <groupId>org.primefaces</groupId> 

           <artifactId>primefaces</artifactId> 

           <version>2.2.1</version> 

       </dependency>

       <dependency> 

           <groupId>org.primefaces.themes</groupId> 

           <artifactId>aristo</artifactId> 

           <version>1.0.0</version> 

       </dependency>

       <dependency>

           <groupId>javax.servlet</groupId>

           <artifactId>jstl</artifactId>

           <version>1.2</version>

       </dependency>

  </dependencies>

  <build>

    <finalName>RulesMaven</finalName>

  </build>

</project>

對著工程點右鍵:RunAs -> Maven install

然後再Run As-> Maven package.

生成完後用Tomcat跑即可。

1.4.   POM、Settings介紹

parent: 宣告繼承。

modules: 宣告聚合,該值是一個當前POM的相對目錄。使用者專案的聚合。

groupId: 定義當前Maven專案隸屬的實際專案。

artifactId: 定義實際專案中的一個Maven專案模組,一般為實際專案名稱。

version: 定義Maven專案當前版本。

groupId、artifactId、version三個屬性構成專案的座標,必須全部填寫。

packaging: 座標元素之一,可以不填,不填預設jar,表示專案構建成jar包;值為war表示可部署的web專案。

name: 名稱。

description: 專案描述。

organization: 所屬組織。

licenses: 許可證。

mailingLists: 郵件列表。  

developers: 開發者。

contributors: 貢獻者。

issueManagement: 問題追蹤系統。

ciManagement: 持續整合系統。

scm: 版本控制系統。

prerequisites-->maven: 要求maven最低版本,預設值為2.0.

build-->sourceDirectory: 主原始碼目錄。

build-->scriptSourceDirectory: 指令碼原始碼目錄。

build-->testSourceDirectory: 測試原始碼目錄。

build-->outputDirectory: 主原始碼輸出目錄。

build-->testOutputDirectory: 測試原始碼輸出目錄。

build-->resources-->resource:  主資源目錄。

build-->testResources-->testResource:測試資源目錄。

build-->finalName: 輸出主構件的名稱。

build-->directory: 輸出目錄。

build-->filters-->filter: 通過properties檔案定義資源過濾屬性。

build-->extensions-->extension: 擴充套件Maven的核心。

build-->pluginManagement:  外掛管理。

build-->plugins-->plugin: 外掛。

profiles-->profile: POM Profile。

distributionManagement-->repository: 釋出版本部署倉庫。

distributionManagement-->snapshotRepository:快照版本部署倉庫。

distributionManagement-->site: 站點部署。

repositories-->repository: 倉庫。

pluginRepositories-->pluginRepository:  外掛倉庫。

dependencies-->dependency: 依賴管理。

properties: Maven屬性。

reporting-->plugins: 報告外掛。

a-->b表示a元素巢狀著b元素。

settings: settings.xml的根元素。

localRepository: 本地倉庫。

interactiveMode: Maven是否與使用者互動,預設值為true。

offline: 離線模式,預設false。

pluginGroups-->pluginGroup: 外掛組。

servers-->server: 下載與部署倉庫的認證資訊。

mirrors-->mirror: 倉庫映象。

proxies-->proxy: 代理。

profiles-->profile: Settings Profile。

activeProfiles-->activeProfile: 啟用Profile。

Maven目錄下的conf資料夾下的settings.xml為全域性的,影響所有使用者的配置。一般建議修改c:\Users\使用者名稱\.m2\目錄下的settings.xml,屬於區域性的,只對當前目

錄下的使用者有用。

Nexus 內建瞭如下倉庫:

1)  MavenCentral :代理 Maven 的中央倉庫,策略為 release

2)  Releases :策略為 Release 的宿主類倉庫,用來部署組織內部的 release 版本構件

3)  Snapshots :策略為 Snapshot 的宿主類倉庫,用來部署組織內部的 release 版本構件

4)  3rdparty :策略為 Release 的宿主類倉庫,用來部署無法從公共倉庫獲得的第三方 release 版構件。

5)  ApacheSnapshots :代理 Apache Maven 倉庫,策略為 Snapshot

6)  CodehausSnapshots :代理 Codehaus Maven 倉庫,策略為 Snapshot

7)  GoogleCode :代理 Google Code Maven 倉庫,策略為 Release

8)  Java.net– Maven 2 :代理 Java.net Maven 倉庫,策略為 Release

9)  PublicRepositories :將上述策略為 Release 的倉庫聚合並通過一致的地址提供服務。

10)  PublicSnapshot Repositories:將上述策略為 Snapshot 的倉庫聚合並通過一致的地址提供服務。

下載後解壓

進入前目錄

E:\nexus-2.1.1\bin\jsw\windows-x86-32

InstallNexus.bat 安裝

UninstallNexus.bat 解除安裝

nexus為windows service,

如果需要設定nexus為開機自動啟動就可以安裝為windows service然後設定啟動方式為自動。

Nexus.bat是直接在命令列中啟動Nexus,如果不想安裝Nexus為windows service,可以用這個檔案來手工控制Nexus的啟動退出。

安裝完後預設使用者:admin 密碼 nexus123

最重要的一件事情就是開啟遠端索引下載,索引這個功能實在是太好用了。
 nexus預設是關閉遠端索引下載功能的,主要是擔心會造成對伺服器的巨大負擔,需要我們手工開啟。
 開啟的方式:

        點選Administration選單下面的Repositories,將這三個倉庫Apache Snapshots,Codehaus Snapshots,Maven Central的Download RemoteIndexes修改為true。然後在這三個倉庫上分別右鍵,選擇Re-index,這樣Nexus就會去下載遠端的索引檔案。

第一步到第三方管理選單

設定引數選擇檔案

第三部上傳

更新第一個tab update Index 到第二個browse Index refresh檢視是否上傳

在prefiles加入

<profile>

<id>nexus</id>

<repositories>

<repository>

<id>nexus</id>

<name>Nexus</name>

<url>http://192.168.1.110:8081/nexus/content/repositories/thirdparty</url>

<releases>

<enabled>true</enabled>

</releases>

<snapshots>

<enabled>true</enabled>

</snapshots>

</repository>

</repositories>

</profile>

末尾加入

<activeProfiles>

<activeProfile>nexus</activeProfile>

</activeProfiles>

POM設定

1.         Settings 的servers節點加入

<server>

<id>releases</id>

<username>deployment</username>

<password>deployment</password>

</server>

2.         POM加入

<distributionManagement>

<!--遠端倉庫-->

<repository>

<id>releases</id>

<url>http://192.168.1.110:8081/nexus/content/repositories/releases</url>

</repository>

<!--快照-->

<snapshotRepository>

<id>snapshots</id>

<name>NexusSnapshot Repository</name>

<url>http://192.168.1.110:8081/nexus/content/repositories/snapshots/</url>

</snapshotRepository>

</distributionManagement>

基本操作

Maven2 的執行命令為: mvn

1.6.1.1.       常用命令

             mvn archetype:create :建立 Maven 專案

          mvn validate:驗證工程是否正確,所有需要的資源是否可用

            mvn compile :編譯原始碼

            mvn test-compile :編譯測試程式碼

            mvn test : 執行應用程式中的單元測試

            mvn site : 生成專案相關資訊的網站

            mvn clean :清除目標目錄中的生成結果

            mvn package : 依據專案生成 對應包(war jar等)檔案

            mvn install :在本地 Repository 中安裝對應包(war jar等)

          mvn deploy  部署專案到倉庫

            mvn eclipse:eclipse :生成 Eclipse 專案檔案

1.6.1.2.       生成Maven專案

建一個 JAVA 專案 :mvn archetype:create -DgroupId=com.demo-DartifactId=App

建一個 web 專案 : mvnarchetype:create -DgroupId=com.demo -DartifactId=web-app

-DarchetypeArtifactId=maven-archetype-webapp

1.6.1.3.生成 Eclipse 專案

普通 Eclipse 專案執行 :mvneclipse:eclipse

Eclipse WTP 專案執行 : mvn eclipse:eclipse –Dwtpversion=1.0 ( wtp1.0 以上版本均可用)

1.6.1.4.      settings.xml配置

1.         開啟settings.xml

2.         在servers節點加入

<server>

<id>releases</id>

<username>deployment</username>

<password>deployment</password>

</server>

<server>

<id>snapshots</id>

<username>deployment</username>

<password>deployment</password>

</server>

3.         Profiles加入

<profile>

<id>nexus</id>

<repositories>

<repository>

<id>nexus</id>

<name>Nexus</name>

    <url>

</url>

<releases>

<enabled>true</enabled>

</releases>

<snapshots>

<enabled>true</enabled>

</snapshots>

</repository>

</repositories>

</profile>

4.         末尾加入

<activeProfiles>

<activeProfile>nexus</activeProfile>

</activeProfiles>

1.6.1.5.       pom.xml設定

1.         倉庫地址設定

<!-- 倉庫管理-->

<distributionManagement>

<!--遠端倉庫-->

<repository>

<id>releases</id>

<url>

</url>

</repository>

<!--快照-->

<snapshotRepository>

<id>snapshots</id>

<name>NexusSnapshot Repository</name>

<url>

</url>

</snapshotRepository>

</distributionManagement>

1.6.1.6.       Eclipse操作

如果多個Module只需要再根節點pom.xml配置

SCM 注意:

1.        在打tagbranch時候需要更新到最新的版本,原生代碼全部提交。不能含有未提交程式碼

2.        branch tag後會自動升級版本號,如果需要打相同版本的branch可以執行

更新版本號

mvn release:update-versions -DdevelopmentVersion=1.0.3-DautoVersionSubmodules=true

3.         標籤版本必須 –SNAPSHOT字尾

1.6.2.1.      SVN安裝

1.         下載安裝:

http://www.sliksvn.com/en/download

下載後安裝:

2.         加入環境變數 path

如:C:\Program Files\SlikSvn\bin

3.         完成後驗證:

svn –version

1.6.2.2.      settings.xml配置

servers節點加加入子節點:SVN使用者 密碼

<server>

<id>svn.warpspeed.com.au</id>

<username>leon</username>

<password>leon</password>

</server>

1.6.2.3.      pom.xml配置

新增外掛

<plugin>

<groupId>org.apache.maven.plugins</groupId>

<artifactId>maven-release-plugin</artifactId>

<version>2.3.2</version>

<configuration>

<branchName>platform-${project.version}</branchName><branchBase>

</branchBase>

<autoVersionSubmodules>true</autoVersionSubmodules>

</configuration>

</plugin>

設定SCM地址

<scm>

<connection>

scm:svn:http://192.168.1.110:81/svn/dev/code/platform

</connection>

<developerConnection>

scm:svn:http://192.168.1.110:81/svn/dev/code/platform

</developerConnection>

</scm>

1.6.2.4.      SCM-SVN標籤

生成SVN標籤:

mvn -X clean release:clean release:prepare

執行完後檢視

1.6.2.5.      SCM-SVN分支

生成SVN分支

mvn -X clean release:clean release:branch

1.         配置Tomcat

進入Tomcat目錄conf\tomcat-users.xml加入

<role rolename="manager"/>

<role rolename="admin"/>

<user username="fanghai" password="fanghaikeji"roles="admin,manager"/>

2.         Settings加入

<!-- tomcat -->

<server>

<id>TomcatServer</id>

<username>fanghai</username>

<password>fanghaikeji</password>

</server>

3.         pom.xml配置

對應webapp專案中<build>節點加入一下資訊

<pluginManagement>

<plugins>

<plugin>

<groupId>org.codehaus.mojo</groupId>

<artifactId>tomcat-maven-plugin</artifactId>

<configuration>

<url>http://127.0.0.1:80/manager</url>

<server>TomcatServer</server>

<path>/fts</path>

</configuration>

</plugin>

</plugins>

</pluginManagement>

有可能記憶體溢位

設定引數

Windows

set MAVEN_OPTS=-Xmx512m -XX:MaxPermSize=128m

Linux

export MAVEN_OPTS="-Xmx512m-XX:MaxPermSize=128m"

mvn clean package tomcat:deploy

命令來將專案打包成一個WAR檔案,並將其部署到Tomcat伺服器

重新部署到tomcat

mvntomcat:redeploy -e

刪除tomcat專案

mvntomcat:undeploy -e

URL:http://127.0.0.1:8080/manager/html驗證是否部署成功。