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. 在打tag、branch時候需要更新到最新的版本,原生代碼全部提交。不能含有未提交程式碼
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驗證是否部署成功。