自動建立目錄java
mvn archetype:generate -- 自動建立方法一(選擇輸入6)web
mvn archetype:generate -DgroupId=com.demo2 -DartifactId=demo2 -Dversion=1.0.0SNAPSHOT -Dpackage=com.demo2 -- 自動建立方法二(選擇輸入6)spring
mvn archetype:generate -DgroupId=com.demo2 -DartifactId=spring-mvc-study -DarchetypeArtifactId=maven-archetype-webapp -- 自動建立Maven Web工程apache
Maven目錄結構spring-mvc
srctomcat
-mainmvc
- javaapp
-packageeclipse
-testwebapp
- java
-package
Maven長用命令(doc命令行下加mvn執行,eclipse執行不需加mvn)
mvn -v -- 查看maven版本
mvn compile -- 編譯
mvn test --測試
mvn package --打包 (eclipse 執行,直接使用package, package -Dmaven.test.skip=true 跳過測試,parent project、 module方式只能打包只能在 父工程執行 package -Dmaven.test.skip=true 打包,每一個Module的Target 下生成jar或war)
mvn clean -- 刪除target
mvn install -- 安裝jar包到本地倉庫中(eclipse 執行,直接使用install , install -Dmaven.test.skip=true 跳過測試)
mvn deploy -- 發佈jar包到遠程倉庫(例: Nexus)
clean jetty:run -- jetty測試Web工程,使用Maven Eclipse插件調試時,去掉mvn(clean 等於 mvn clean)
mvn 調試信息(例:mvn -X -e clean compile -e:打印錯誤信息 -X:表明debug模式 )
clean tomcat:run -- tomcat測試Web工程
修改配置文件(settings.xml)
<localRepository>E:/maven/repository</localRepository> -- 修改本地默認倉庫地址
pom.xml 解析
<modelVersion>4.0.0</modelVersion> -- 指定了當前pom的版本
<groupId>反寫公司的域名+項目名</groupId>
<artifactId>項目名+模塊名</artifactId>
<version>1.0.0-SNAPSHOT</version> -- 第一個0表示大版本號 第二個0表示分支版本號 第三個0表示小版本號 0.0.1 snapshot快照 alpha 內測版本 beta公測 Release穩定 GA正式發佈
<packaging>jar</packaging> -- 默認jar war zip pom(pom:表示被繼承的模塊)
<name>demo1</name> -- 項目描述名
<url>http://maven.apache.org</url> -- 項目地址
<description></description> -- 項目描述
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
<scope>test</scope>
<optional></optional> -- 設置依賴是否可選擇
<exclusions> -- 排除依賴傳遞列表
<exclusion> </exclusion>
</exclusions>
</dependency>
</dependencies>
Nexus(Maven倉庫管理器)
-- 安裝後,本地配置鏡像爲Maven私服地址,私服找此版本,會下載到私服。-----
配置設置
Maven優先尋找${user.home}/.m2/settings.xml,若找不到使用apache-maven-3.3.3\conf\settings.xml
英國鏡像庫配置
<mirror>
<id>UK</id>
<mirrorOf>central</mirrorOf>
<name>UK Central</name>
<url>http://uk.maven.org/maven2</url>
</mirror>
Maven手動把本地jar安裝到本地倉庫
創建一個文件夾,把本身的編寫的jar放到此文件夾下,編寫pom.xml,在pom.xml中定義maven座標。在cmd窗口中執行命令 mvn install:install-file -Dfile=<path-to-file> -DgroupId=<group-id> -DartifactId=<artifact-id> -Dversion=<version> -Dpackaging=<packaging> (例: mvn install:install-file -Dfile=D:/jar/xxx.jar -DgroupId=xxx.xxx -DartifactId=xxx -Dversion=x.x -Dpackaging=jar)
打包jar包,pom中添加
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.3</version>
</plugin>
</plugins>
</build>
打包war包,pom中添加
<build>
<finalName>Esell</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.6</version>
</plugin>
</plugins>
</build>
maven自動發佈web程序到tomcat7中(執行名稱 mvn:tomcat:redeploy,eclipse中執行(run as-> Maven build中) tomcat:redeploy)
a. 修改apache-tomcat-7.0.39\conf\tomcat-users.xml 添加配置
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<user username="tomcat" password="abc" roles="manager-gui,manager-script"/>
b. 項目pom.xml中添加插件配置
<build>
<finalName>Esell</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.6</version>
</plugin>
<!-- 自動發佈程序到tomcat7插件 -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>tomcat-maven-plugin</artifactId>
<configuration>
<url>http://192.168.0.27:8081/manager/text</url>
<username>tomcat</username>
<password>abc</password>
<path>/${finalName}</path>
</configuration>
</plugin>
</plugins>
</build>
a. 修改 settings.xml(用戶.md2/settings.xml 或查看 eclipse->Preferences->Maven->User settings 的Maven 配置地址),在<servers></servers>裏添加下列配置:
<server>
<id>releases</id>
<username>admin</username>
<password>admin123</password>
</server>
<server>
<id>snapshots</id>
<username>admin</username>
<password>admin123</password>
</server>
b. 修改項目下的pom.xml(若是是Module 修改Module下的pom.xml,也能夠在父項目pom.xml設置,直接在父項目執行deploy,所有項目都會發布到遠端庫),添加以下配置:
<distributionManagement>
<!-- 發佈倉庫:版本爲正式版本 發佈到此版本(例:version 配置:0.0.1) 發佈執行命令 deploy 無需配置build-->
<repository>
<id>releases</id>
<name>Nexus Release Repository</name>
<url>http://localhost:8081/nexus/content/repositories/releases/</url>
</repository>
<!-- 快照倉庫:版本爲快照版本 發佈到此版本(例:version 配置:0.0.1-SNAPSHOT) 發佈執行命令 deploy 無需配置build-->
<snapshotRepository>
<id>snapshots</id>
<name>Nexus Snapshot Repository</name>
<url>http://localhost:8081/nexus/content/repositories/snapshots/</url>
</snapshotRepository>
</distributionManagement>
c. 在項目或module下右鍵->Run As->Maven build->deploy
項目會根據版本發佈到 releases 或 snapshots倉庫,倉庫對應的Configuration->Configuration->Deployment Policy設置爲:Allow Redeploy (只有倉庫Type類型爲:hosted 的纔有此屬性,不設置此屬性,版本號不變是不能從新發布的);
Maven多模塊項目建立及打包(jar、war)
a. 建立Maven Project(選擇 maven-archetype-quickstart)
建立成功後修改packaging爲pom: <packaging>pom</packaging> <!-- pom:表示被繼承的模塊 -->
b. 右擊項目建立Maven Module(選擇 maven-archetype-quickstart(jar) 或 maven-archetype-webapp(war))
建立成功後,父工程pom.xml會添加子模塊的
<modules>
<module>poi_exceluitl</module>
<module>poi_module</module>
<module>poi_web</module>
</modules>
c. module間要依賴直接在<dependencies></dependencies>中配置依賴,會顯示對應的module在jar的 maven Dependencies 中(配置版本錯誤未在本地倉庫中或nexus中下載,直接顯示的jar包不是模塊名)
d. 打包整個項目
直接在父工程中執行:package -Dmaven.test.skip=true(忽略測試,不編譯測試用例,-DskipTests 忽略測試,但編譯測試用例類生成相應的class文件至target/test-classes下) 打包,每一個Module的Target 下生成jar或war
e. 安裝項目到本地倉庫(包括jar、war)
直接在父工程中執行:install -Dmaven.test.skip=true(忽略測試) ,每一個Module發佈到對應的本地倉庫)
f. mvn source:jar(打包源碼到Tartget,無需配置pom.xml 例:poi_exceluitl-0.0.2-SNAPSHOT-sources.jar)
g. 使用插件,在執行compile或package或intall 下同時執行打包源碼 (添加下列配置,deploy發佈的時候,也能夠同時把源碼發佈到Nexus,打包的sources.jar源碼,phase使用 <phase>compile</phase>,源碼能夠在程序中執行ctrl+shift+t 查找)
<build>
<plugins>
<plugin>
<artifactId>maven-source-plugin</artifactId>
<version>2.1</version>
<configuration>
<attach>true</attach>
</configuration>
<executions>
<execution>
<phase>compile</phase> <!-- 也能夠package、install--> <goals> <goal>jar</goal> </goals> </execution> </executions> </plugin> </plugins> </build>