Maven

  1. 自動建立目錄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

  2. Maven目錄結構spring-mvc

    srctomcat

         -mainmvc

                   - javaapp

                           -packageeclipse

       -testwebapp

                 - java

                          -package

  3. 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工程

  4. 修改配置文件(settings.xml)

    <localRepository>E:/maven/repository</localRepository>  -- 修改本地默認倉庫地址

  5. 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>

  6. Nexus(Maven倉庫管理器)

    -- 安裝後,本地配置鏡像爲Maven私服地址,私服找此版本,會下載到私服。-----

  7. 配置設置

    Maven優先尋找${user.home}/.m2/settings.xml,若找不到使用apache-maven-3.3.3\conf\settings.xml

  8. 英國鏡像庫配置

    <mirror>

          <id>UK</id>

          <mirrorOf>central</mirrorOf>

          <name>UK Central</name>

          <url>http://uk.maven.org/maven2</url>

    </mirror>

  9. 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)

  10. 打包jar包,pom中添加

    <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-shade-plugin</artifactId>
                    <version>2.3</version>
                </plugin>
            </plugins>
    </build>

  11. 打包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>

  12. 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>

    c. 添加屬性   
      <properties>
        <finalName>demo</finalName> 
      </properties>
  13. 打包及部署Jar到Nexus

    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 的纔有此屬性,不設置此屬性,版本號不變是不能從新發布的);

  14. 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>

相關文章
相關標籤/搜索