rosial

          lost memory
          數據加載中……

          zz - Maven學習總結

          原文地址:http://www.cnblogs.com/hanwesley/articles/1948230.html

          Maven學習總結

          2011-01-31 12:26 by hanwesley, 603 visits, 收藏編輯

          Maven簡單介紹

          Maven是基于項目對象模型(Project Object Model),可以通過一小段描述信息來管理項目的構建,報告和文檔的軟件項目管理工具.

          掌握maven就是要學會如何編寫pom.xml,尤其對于多個子項目的管理

          約定俗成

          src/main/java  存放Java文件

          src/main/resources  存放資源文件

          src/main/test  存放測試文件

          Maven坐標

          <groupId>com.ibatis</groupId>  項目屬于哪個組

          <artifactId>ibatis-sqlmap</artifactId>  項目在組中唯一的ID

          <version>2.1.0.565</version>  項目當前的版本

          <name>ibatis sqlmap包</name>  非必需,描述信息

          在Maven中任何的jar,POM,或者war都是基于坐標進行區分的

          Maven主項目和子項目管理的不同

            主項目jar包版本統一管理

          <dependencyManagement>

            子項目不用指定jar包版本

          指定當前項目的坐標:

          <groupId>com.taobao.newLauncher</groupId>

          <artifactId>newLauncher-biz-home</artifactId>

          <name>newlauncher-biz-home</name>

          <version>1.0.0</version>

          <packaging>jar</packaging>

          如果是主pom文件, packaging指定為pom

          如果是要生成的war包,packaging指定為war

           

          主項目指定子項目

              <modules>

                 <module>newlauncher-biz-core</module>

                 <module>newlauncher-biz-home</module>

            </modules>

           

          子項目需要指定parent

            <parent>

                 <artifactId>newLauncher</artifactId>

                 <groupId>com.taobao.newLauncher</groupId>

                 <version>1.0.0</version>

          </parent>

          Maven命令

          mvn clean     刪除target目錄內容

          mvn package   打包

          mvn install   讓項目真正引用生成的jar包

          mvn test      執行測試用例

          Maven插件

          1)maven-compiler-plugin 指定JDK版本

                <plugin>

                       <artifactId>maven-compiler-plugin</artifactId>

                       <version>2.3.2</version>

                       <configuration>

                        <source>1.6</source>

                        <target>1.6</target>

                        <showWarnings>true</showWarnings>

                        <encoding>gbk</encoding>

                       </configuration>

                       <dependencies>

                        <dependency>

                          <groupId>org.codehaus.plexus</groupId>

                          <artifactId>plexus-compiler-javac</artifactId>

                          <version>1.8.1</version>

                        </dependency>

                       </dependencies>

                 </plugin>

           

          2)maven-war-plugin 打war包 在web子項目中指定

           

          <build>          

              <finalName>launcher</finalName>

              <directory>target/jboss</directory>

               <plugins>

                       <plugin>

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

                          <artifactId>maven-war-plugin</artifactId>

                          <version>2.1.1</version>

                          <configuration>

                              <webResources>

                                  <resource>

          <directory>src/main/resources</directory>

                                      <filtering>true</filtering>

                                      <includes>

                                          <include>**/*.xml</include>

                                          <include>**/*.vm</include>

                                      </includes>

                                      <targetPath>WEB-INF</targetPath>

                                  </resource>   

                              </webResources>

                          </configuration>

                      </plugin>

                  </plugins>

          </build>

           

          3)單元測試插件

           

          <plugin>

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

              <artifactId>maven-surefire-plugin</artifactId>

              <version>2.6</version>

              <configuration>

                 <testFailureIgnore>true</testFailureIgnore>

           <!-單元測試失敗依然打包-->

                 <skip>true</skip> 是否過濾單元測試

                 <!--<includes>

                     <include>**/*Test.java</include>

                 </includes>-->

                 <excludes>

                     <exclude>**/*Test.java</exclude>

                   </excludes>

              </configuration>

          </plugin>

           

          4)jar包插件

           

          <plugin>

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

              <artifactId>maven-jar-plugin</artifactId>

              <version>2.3.1</version>

              <configuration>

                 <archive>

                    <addMavenDescriptor>false</addMavenDescriptor>

          是否增加maven描述信息

                     <manifest>

          <addDefaultImplementationEntries>

          true

          </addDefaultImplementationEntries>

                     </manifest>

                     <manifestEntries>

                    <Implementation-Build>${buildNumber}</Implementation-Build>

                     </manifestEntries>

                 </archive>

              </configuration>

          </plugin>

           

          5)resource插件  類似antx的auto-config功能

          Mvn package –Pdev  dev即定義的ID

          Antx中的屬性文件在Maven中如何引用?

          在主pom.xml中增加配置屬性 

          <profiles>中可以有多個profile, id需唯一

           

          <profiles>

                 <profile>

                     <id>dev</id>

                     <properties>

                     <props>launcher.properties.dev</props>

            <dependency.version.ext>-SNAPSHOT</dependency.version.ext>

                     </properties>

                     <activation>

                        <activeByDefault>true</activeByDefault>

          是否默認引用此文件 如果此項為true,引用此文件 參數-P可以不加

                     </activation>

                 </profile>

              </profiles>

           

          根據外部屬性文件填寫需要過濾文件中的變量,默認會生成到classes目錄

           

          <filters>

                     <filter>jdbc.properties.dev</filter>

          Filter 配置項指定過濾那個文件?

          1) 可以寫文件名

          2) 也可以寫-P指定的profile ,

          引用的是上述定義的profile dbc.properties.dev替換為../${props}

                 </filters>

                 <resources>

                     <resource>

                        <directory>src/main/resources</directory>

                        <filtering>true</filtering>

          true需要過濾,false不需要過濾

                        <includes>  需要過濾的文件

                            <include>**/*.*</include>

                            <include>**/*</include>

                        </includes>

                        <excludes> 那些文件不需要移動到classes目錄

                        <exclude>**/*.xml</exclude>

                        <exclude>**/*.vm</exclude>

                        </excludes>

                     </resource>

                     <resource>

                        <directory>src/main/java</directory>

                        <includes>

                            <include>**/*.xml</include>

                        </includes>

                     </resource>

                 </resources>

          6)maven-eclipse-plugin插件

              <plugin>

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

                            <artifactId>maven-eclipse-plugin</artifactId>

                            <version>2.8</version>

                            <configuration>

                               <sourceExcludes>

                                   <sourceExclude>**/.svn/</sourceExclude>

                               </sourceExcludes>

                               <downloadSources>true</downloadSources>

                            </configuration>

                        </plugin>

          Maven庫配置

          Maven從中央倉庫下載這些資源文件,如果需要修改項目的下載地址,可以在主pom.xml文件中加入:

          <repositories></repositories> 中任意增加repository倉庫

          <repository>

               <id>simba-nexus</id>

          <url>http://mvnrepo.maven.com/nexus/content/repositories/releases</url>

               <releases>

                 <enabled>true</enabled>

              </releases>

              <snapshots>

                 <enabled>false</enabled>

              </snapshots>

          </repository>

          posted on 2011-11-17 15:37 rosial 閱讀(572) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 蕉岭县| 华安县| 佳木斯市| 百色市| 云霄县| 吴旗县| 察雅县| 四会市| 荣成市| 民县| 疏附县| 泽州县| 岳阳县| 洛隆县| 蓝田县| 三都| 镇雄县| 龙江县| 界首市| 南城县| 泰宁县| 庄河市| 都匀市| 岱山县| 郧西县| 洛隆县| 嵊州市| 靖宇县| 汝州市| 祁门县| 息烽县| 崇礼县| 延川县| 南开区| 宁蒗| 赤峰市| 凤山县| 互助| 专栏| 江津市| 玉树县|