Terry.Li-彬

          虛其心,可解天下之問;專其心,可治天下之學;靜其心,可悟天下之理;恒其心,可成天下之業。

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            143 隨筆 :: 344 文章 :: 130 評論 :: 0 Trackbacks

          maven 是一個java項目管理工具,深化了ant,但又有自己一整套的項目集成策略。
          目前的版本是2.0.2

          1. 下載maven 2 [鏈接],解壓縮。
          2. 配置環境變量,maven_home, path
          3. cmd-> mvn --version 檢查是否安裝成功 [顯示版本號,則說明安裝成功]
          4. 配置
            Maven的配置分為三個層次


            Project - pom.xml,針對某個項目的配置
            Installation
            User -針對某個用戶的配置


            我們首先配置主要是user級別的,主要包括兩點
            設置本地的資源庫和代理服務器[如果需要的話]
            在%maven_home%/conf/setting.xml中配置:

            <localRepository>d:/repo</localRepository> 

            <proxy>
              
            <id>proxy1</id>
              
            <active>true</active>
              
            <protocol>http</protocol>
              
            <username></username>
              
            <password></password>
              
            <host>222.136.91.1</host>
              
            <port>80</port>
              
            <nonProxyHosts></nonProxyHosts>
            </proxy>


            修改之后copy一份到${home}/.m2 [最新版本不需要此步驟]
          5. 建立新的項目
            mvn archetype:create -DgroupId=com.mycompany.app -DartifactId=my-app
            首先,程序會從遠程下載必要的jar包到你的localRepository,即我們剛剛設置的[d:/repo]
            然后,會在當前目錄下面生成my-app文件夾,包括簡單的包結構[java,test]和一個HelloWorld程序及測試。
            以及pom.xml文件。
            注意:pom.xml contains the Project Object Model (POM) for this project.
            The POM is the basic unit of work in Maven。
          6. 編譯
            mvn compile
            第一次運行會下載很多jar包。而且機器負荷會很重。
            運行這個命令需要在pom.xml相同目錄下面
            這個編譯指揮編譯主程序,不會編譯test下面的程序。
            如果需要單獨編譯test,請運行 mvn test-compile
            compile之后會生成target文件夾,主程序編譯在classes下面,測試程序放在test-classes下
          7. 測試
            mvn test. 會自動先編譯在運行測試
          8. 打包
            mvn package
            打包之前會進行編譯,測試
          9. 裝[install]
            mvn install
            會將package之后的jar包copy到
            <local-repository>/com/mycompany/app/my-app/1.0-SNAPSHOT/my-app-1.0-SNAPSHOT.jar
          10.  其他
            mvn site
             注意:還可以deploy site
             在pom.xml中加入
              < distributionManagement >
               
            < site >
                 
            < id > website </ id >    
                    
            < url > scp://www.mycompany.com/www/docs/project/ </ url >
               
            </ site >
             
            </ distributionManagement >


            當然你需要設置server
            mvn site-deploy
            mvn clean
            mvn idea:idea [為IDE工具idea生成項目文件]

          11. Resource
            ${basedir}/src/main/resources都會編譯到jar文件中
            而${basedir}/src/main/resources 下的內容會直接位于jar文件的頂部
            測試用資源文件-> ${basedir}/src/test/resources
            引用時參照此例:
            InputStream is = getClass().getResourceAsStream( "/test.properties" );
            文件位于 ${basedir}/src/test/resources/test.properties。

          12.  如何filter我們的資源文件
            在pom.xml中修改:

            < build >
                
            < resources >
                  
            < resource >
                    
            < directory > src/main/resources </ directory >
                    
            < filtering > true </ filtering >
                  
            </ resource >
                
            </ resources >
              
            </ build >


            因為原來默認的filter為false所以要加上上面的代碼
            e.g
            我們在src/main/resources下面建立application.properties文件
             # application.properties
             application.name=${pom.name}
             application.version=${pom.version}
            運行:mvn process-resources
            在target/classes下面,
            application.properties:
             # application.properties
             application.name=Maven Quick Start Archetype
             application.version=1.0-SNAPSHOT
            這就是所謂的filter.
            當然filter還可以用其他的外部文件,不一定來自pom.xml[ ${pom.name} ]以及setting.xml[ ${settings.localRepository }]
            e.g
            src/main/filters/filter.properties
             # filter.properties
             my.filter.value=hello!
            pom.xml

               < build >
                
            < filters >
                  
            < filter > src/main/filters/filter.properties </ filter >
                
            </ filters >
                
            < resources >
                  
            < resource >
                    
            < directory > src/main/resources </ directory >
                    
            < filtering > true </ filtering >
                  
            </ resource >
                
            </ resources >
              
            </ build >


            # application.properties
            application.name=${pom.name}
            application.version=${pom.version}
            message=${my.filter.value}
            這樣在運行mvn process-resources 會得到類似的效果。

            當然我們也可以直接在pom.xml中定義:

            < build >
                
            < resources >
                  
            < resource >
                    
            < directory > src/main/resources </ directory >
                    
            < filtering > true </ filtering >
                  
            </ resource >
                
            </ resources >
              
            </ build >
              
            < properties >
                
            < my .filter.value > hello </ my.filter.value >
              
            </ properties >


            效果同樣,這樣就不需要外部文件了

            另外filter還可以來自系統設置以及可以自定義:
            # application.properties
            java.version=${java.version}
            command.line.prop=${command.line.prop}

          13. jar包依賴
            我們在mvn install后在local repo中生成的jar包也可以被其他項目所引用
            <dependency>
                  
            <groupId>com.mycompany.app</groupId>
                  
            <artifactId>my-app</artifactId>
                  
            <version>1.0-SNAPSHOT</version>
                  
            <scope>compile</scope>
            </dependency>
            注意scope,這里是compile,如果使用junit,scope是test.

            舉例說明
            如果我們的project需要用到log4j包,那么我們可以先google--"site:www.ibiblio.org maven2 log4j".
            Index of /maven2/log4j/log4j  下面有maven-metadata.xml 描述了groupId,artifactId,version等等。
            獲取了這些信息之后,你就可以在pom.xml中添加依賴了
            <dependency>
                  
            <groupId>log4j</groupId>
                  
            <artifactId>log4j</artifactId>
                  
            <version>1.2.12</version>
                  
            <scope>compile</scope>
            </dependency>

            14 如何發布我的jar包到我的remote repository
            你需要在setting.xml中間設置server
            <servers>
                
            <server>
                  
            <id>mycompany-repository</id>
                  
            <username>jvanzyl</username>
                  
            <!-- Default value is ~/.ssh/id_dsa -->
                
            <privateKey>/path/to/identity</privateKey>        
                     
            <passphrase>my_key_passphrase</passphrase>
                
            </server>
            </servers>
            然后在pom.xml中設置遠程url
            <distributionManagement>
                
            <repository>
                  
            <id>mycompany-repository</id>
                  
            <name>MyCompany Repository</name>
                 
            <url>scp://repository.mycompany.com/repository/maven2</url>
                
            </repository>
              
            </distributionManagement>

            使用maven2 構建 Webapp應用程序
            基于以下框架:
            spring,hibernate,webwork.2.2.2
            1. mvn archetype:create -DgroupId=com.mycompany.app -DartifactId=my-webapp -DarchetypeArtifactId=maven-archetype-webapp
            2. 添加main/java test/java 文件夾
            3. 構建pom.xml.添加相關依賴:
            注意以下幾點,
                  spring:使用id:org.springframework
                  hibernate:  org.hibernate
            中途會出現錯誤。因為jta下載不到,因為licenese的原因
            jta需要自己下載:java.sun.com/products/jta
            下載回來后 使用jar命令打包 放到本地Repo。
            4.配置pom
            <resources>
               <resource>
                <directory>src/main/resources</directory>
               </resource>
               <resource>
                <directory>src/main/java</directory>
                <includes>
                 <include>**/*.xml</include>
                </includes>
               </resource>
              </resources>
              <testResources>
               <testResource>
                <directory>src/test/resources</directory>
               </testResource>
               <testResource>
                <directory>src/main/webapp</directory>
                <includes>
                 <include>**/*.xml</include>
                </includes>
               </testResource>
              </testResources>
            5.我們用到了jetty6來自動化部署
            <plugins>
              <plugin>
                <groupId>org.mortbay.jetty</groupId>
                <artifactId>maven-jetty6-plugin</artifactId>
               <version>6.0.0beta14</version>      
               </plugin>
              </plugins>
            mvn package 之后可以mvn jetty6:run
            啟動之后,可以在另一個進程 mvn compile.冒死可以熱交換
            在mvn jetty6:run的console Ctrl+c可以停止進程
            6.文件放置位置:
            resource/ :
            log4j.xml ,webwork相關,ehcache.xml, spring配置文件的properties文件,比如jdbc.properties
            webapp/web-inf  :
            applicationContext,web.xml
            hbm放在java里面
            7. 其他相關
            在webwork2.2中,不再需要通過ActionAutoWiringInterceptor來給Action注入Spring的bean(這種方式仍然保留在xwork1.1中),改用了另一種更加方便的方式WebWorkSpringObjectFactory,配置方式如下:
            在webwork.properties中加入如下配置內容:

            webwork.objectFactory=spring
            #以下配置可選
            #webwork.objectFactory.spring.autoWire=name這樣就可以了,
            在Action中聲明需要某Spring bean,就會自動注入進來。

            autowire的方式有四種:name,type,auto,constructor,默認方式是name,autowire語義是Spring的語義
            另外不推薦用spring管理action

            使用maven2 構建 Webapp應用程序
            基于以下框架:
            spring,hibernate,webwork.2.2.2
            1. mvn archetype:create -DgroupId=com.mycompany.app -DartifactId=my-webapp -DarchetypeArtifactId=maven-archetype-webapp
            2. 添加main/java test/java 文件夾
            3. 構建pom.xml.添加相關依賴:
            注意以下幾點,
                  spring:使用id:org.springframework
                  hibernate:  org.hibernate
            中途會出現錯誤。因為jta下載不到,因為licenese的原因
            jta需要自己下載:java.sun.com/products/jta
            下載回來后 使用jar命令打包 放到本地Repo。
            4.配置pom
            <resources>
               <resource>
                <directory>src/main/resources</directory>
               </resource>
               <resource>
                <directory>src/main/java</directory>
                <includes>
                 <include>**/*.xml</include>
                </includes>
               </resource>
              </resources>
              <testResources>
               <testResource>
                <directory>src/test/resources</directory>
               </testResource>
               <testResource>
                <directory>src/main/webapp</directory>
                <includes>
                 <include>**/*.xml</include>
                </includes>
               </testResource>
              </testResources>
            5.我們用到了jetty6來自動化部署
            <plugins>
              <plugin>
                <groupId>org.mortbay.jetty</groupId>
                <artifactId>maven-jetty6-plugin</artifactId>
               <version>6.0.0beta14</version>      
               </plugin>
              </plugins>
            mvn package 之后可以mvn jetty6:run
            啟動之后,可以在另一個進程 mvn compile.冒死可以熱交換
            在mvn jetty6:run的console Ctrl+c可以停止進程
            6.文件放置位置:
            resource/ :
            log4j.xml ,webwork相關,ehcache.xml, spring配置文件的properties文件,比如jdbc.properties
            webapp/web-inf  :
            applicationContext,web.xml
            hbm放在java里面
            7. 其他相關
            在webwork2.2中,不再需要通過ActionAutoWiringInterceptor來給Action注入Spring的bean(這種方式仍然保留在xwork1.1中),改用了另一種更加方便的方式WebWorkSpringObjectFactory,配置方式如下:
            在webwork.properties中加入如下配置內容:

            webwork.objectFactory=spring
            #以下配置可選
            #webwork.objectFactory.spring.autoWire=name這樣就可以了,
            在Action中聲明需要某Spring bean,就會自動注入進來。

            autowire的方式有四種:name,type,auto,constructor,默認方式是name,autowire語義是Spring的語義
            另外不推薦用spring管理action

          posted on 2008-01-10 19:35 禮物 閱讀(619) 評論(0)  編輯  收藏 所屬分類: maven2
          主站蜘蛛池模板: 普宁市| 姚安县| 武威市| 衡南县| 灵璧县| 陇川县| 东宁县| 澄迈县| 辽宁省| 普陀区| 肇东市| 株洲市| 绥德县| 丰台区| 尼勒克县| 禄劝| 景宁| 灵丘县| 武城县| 闽侯县| 深泽县| 周至县| 安徽省| 迁西县| 勐海县| 曲阜市| 元朗区| 新野县| 大化| 金山区| 田东县| 文水县| 麻城市| 皋兰县| 霸州市| 玉环县| 德化县| 舒城县| 东阿县| 焦作市| 剑河县|