maven



coral爲前端框架,marble爲服務端框架
--------------------------------------------------------------
http://www.cnblogs.com/haippy/archive/2012/07/04/2576453.html
-------------------------------------------------------------
mvn  -v  類似於 javac -version  或者 git --version


在linux上使用maven也需要像使用java一樣設置環境變量 這是
export M2_HOME     = /?
export PATH = $PATH:$M2_HOME/bin
export MAVEN_OPTS = -Xms256m -Xmx512m




關於myeclipse中的內嵌maven的替換.路徑是  Windows-->Preferences-->Maven-->右邊點擊add進行替換






------------------------------------一般常用命令----------------------------------------
mvn  help:system 自動在本用戶下創建   ~/.m2/repository
mvn clean compile     清理編譯
mvn clean test  清理測試
mvn clean package 清理打包
mvn clean install  清理將打包好的jar存入 本地倉庫  注意是本地倉庫
mvn archetype:generate 使用Archetype生成項目骨架
mvn clean deploy  根據pom中的配置信息將項目發佈到遠程倉庫中
------------------------------------一般常用命令----------------------------------------




---------------------------------maven目錄結構----------------------------------------
src/main/java :正式內容包路徑
src/mian/resources :正式的配置文件路徑
src/test/java :測試包路徑
src/test/resources :測試的配置文件路徑
src/main/webapp : war 資源目錄
---------------------------------maven目錄結構----------------------------------------






----------------------------優化依賴命令-----------------------------------------------
mvn dependency:list   顯示所有已經解析的所有依賴
mvn dependency:tree  以目錄樹的形式展現依賴,  最高層爲一層依賴 其次二層依賴 三層依賴....
mvn dependency:analyze  第一部分顯示 已經使用但是未顯示依賴的的  第二部分顯示項目未使用的但是依賴的
----------------------------優化依賴命令-----------------------------------------------


構件: jar 插件 war  所有依賴的jar
構建:編譯 測試 打包 發佈






---------------------------關於 maven的生命週期 和插件 關係---------------------
生命週期就是接口:表明要幹什麼事情
插件就是具體的實現:表明怎麼幹這件事情
---------------------------關於 maven的生命週期 和插件 關係---------------------






聚合,繼承,集成測試,自動化部署,(這幾塊非常重要 自己去瞅瞅吧)










如下是pom.xml文件的常用配置




<project xmlns="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>  <!-- 固定值在MAVEN3中-->
  <groupId>cuiyaonan2000</groupId>  <!-- 所屬於的組 -->
  <artifactId>maven</artifactId>  <!-- 唯一標示 -->
  <version>0.0.1-SNAPSHOT</version>  <!-- 版本號 -->
  <packaging>war</packaging>   <!-- 項目的打包方式,默認使用jar -->
  <name>maven項目模板的基本使用</name>
  <description> 這裏的描述不知道是幹嗎用</description>
   
   <properties>
        <springframework.version>2.5.6</springframework.verson>
        <!-- 歸類依賴 只需在  <version>${springframework.version}</version>  使用就可以了-->
   </properties>


<dependencies>
    <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>4.7</version>
          <!-- <type>依賴的類型,大部分情況下不必聲明 默認是jar</type> -->
          <scope>test</scope>  <!--  依賴範圍  傳遞性依賴 詳見p63 -->
          <!-- <optional>標記依賴是否可選 不明白 該處的值是 true 和 false 詳見p66</optional> -->
          <!--
                <exclusions>
                    <exclusion>
                        排除傳遞性依賴 只需列出如下的2項就可以了
                        <groupId></groupId>
                        <artifactId></artifactId>
                    </exclusion>
                </exclusions>
          -->
    </dependency>
</dependencies>








<build>
    <plugins>
        <!-- 設置這個插件的對應Java版本,貌似是爲了解決一個歷史問題-->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.5</source>
                <target>1.5</target>
            </configuration>
        </plugin>
        <!-- 如下使用UTF-8 處理資源文件 -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-resources-plugin</artifactId>
            <configuration>
                 <encoding>UTF-8</encoding>
            </configuration>
        </plugin>
    </plugins>




<!--  配置遠程版本倉庫  -->
<repositories>
    <!-- 設置遠程版本庫  直接收發布版本 不接受快照版本-->
    <repository>
        <id>jboss</id>  <!-- 如果是用central 就會覆蓋中央倉庫 -->
        <name>JBoss Repository</name>
        <url>http://repository.jboss.com/maven2/</url>
        <release>
            <enabled>true</enabled>
            <!-- 如下的2個參數詳見p83
            <updatePolicy>daily</updatePolicy>  
            <checksumPolicy>ignore</checksumPolicy>
            -->
        </release>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
        <layout>default</layout>
    </repository>
</repositories>






<!--  將該項目 發佈到遠程倉庫中 -->
<distributionManagement>
    <repository>
        <id>proj-release</id>   <!--  這裏的id是爲了 跟setting.xml中的 username  和 userpassword 的id匹配,有的倉庫需要權限賬戶-->    
        <name>Proj Release Repository</name>
        <url>http://192.168.89.130</url>
    </repository>
    <snapshotRepository>
        <id>proj-release</id>
        <name>Proj Release Repository</name>
        <url>http://192.168.89.130</url>
    </snapshotRepository>
</distributionManagement>


</build>
</project>
==============================================================================
maven
一 :依賴的範圍  (1編譯 2 測試 3運行)
<scope>import</scope>
1 compile (1編譯 2 測試 3運行)。默認使用此依賴範圍
2 provied (1編譯 2 測試)
3 runtime (2 測試 3運行)
4 test  (2 測試 )
5 system (1編譯 2 測試) 不可移植性
6 import  導入的範圍 ,它只用在dependcyManagement中
表示從其他的pom中導入dependency 配置
二 依賴傳遞
eg:山雞跟楠哥混  南哥跟b哥混====》等價于山雞間接跟b哥混
Run as===》maven build ===> clean package //打包
install //安裝到本地倉庫 [INFO] Installing D:\kaifaHuanjing\lijufa\workspase\hongxing-bge\pom.xml to C:\Users\ljf\.m2\repository\com\hongxing\hongxing-bge\0.0.1-SNAPSHOT\hongxing-bge-0.0.1-SNAPSHOT.pom
clean compile
 <exclusions>
 <exclusion>
   <groupId>com.hongxing</groupId>
            <artifactId>hongxing-bge</artifactId>
 </exclusion>
  </exclusions>
三 依賴衝突
1 短路優先
a-b-c-x(jar)
a-d-x(jar)
2 先聲明先優先
四 聚合和繼承
聚合(其他項目的容器) <modules>.............. <module>BigHealth-Ehr</module>..........</modules>
繼承:父類有的子類就有  
Maven 中央倉庫地址:
Maven 常用倉庫網址
    1. http://www.sonatype.org/nexus/


    2. http://mvnrepository.com/ (本人推薦倉庫)


    3. http://repo1.maven.org/maven2


==========================
1.打開eclipse
2.window-->references-->Maven0-->
User Settings:修改User Settings,
Browse重新選擇新位置D:\gongsi\apache-maven-3.1.0\conf\settings.xml。




當你在eclipse中集成了maven2後,默認情況下,
eclipse會在你的系統盤(c:/)下創建一個目錄,
C:/Documents and Settings/danlley/.m2/repository
並將其作爲數據倉庫目錄。如果有一天當你很不幸的需要重做系統,
而又無法將maven2倉庫目錄下的數據及時轉移的時候,
你此前對maven2倉庫所做的一切維護都將意味着竹籃打水一場空。爲了讓你的在maven2中的損失最小,
提高你所謂勞動成果的安全係數,建議將你的數據倉庫進行遷移,具體設置方式如下:
1.打開eclipse
2.window-->references-->Java-->build path-->classpath variables
3.通過上面兩部操作你將看到一個名爲M2_REPO的variables屬性
4.雙擊屬性或者點擊edit按鈕
5.修改屬性C:/Documents and Settings/danlley/.m2/repository 爲 E:/maven-2.0.4/.m2/repository
 
OK,從此你就可以高枕無憂嘍!
===========================================
<groupId>反寫的公司網址+項目名</groupId>
<artifactId>項目名+模塊名<artifactId>
<version></version>
<!-- 默認 jar 
war
zip
pom
-->
<packaging></packaging>
<name>項目描述名</name>
<url>項目地址</url>
<description>項目描述</description>
<parent>
<groupId>com.dcits.djk</groupId>
<artifactId>BigHealth</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
//
<modules>
  <module>BigHealth-Core</module>
  <module>BigHealth-Web</module>
  <module>BigHealth-Auth</module>
  <module>BigHealth-Manager</module>
  <module>BigHealth-Img</module>
  <module>BigHealth-Mis</module>
  <module>BigHealth-Consult</module>
  <module>BigHealth-Selftest</module>
  <module>BigHealth-Telserv</module>
  <module>BigHealth-Ohar</module>
  <module>BigHealth-Medicalabroad</module>
  <module>BigHealth-Examination</module>
  <module>BigHealth-Examcenter</module>
  <module>BigHealth-Familydoctor</module>
  <module>BigHealth-Ncd</module>
  <module>BigHealth-Ehr</module>
  </modules>
<build>
//插件
<plugins>
<!-- compiler插件, 設定JDK版本 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<showWarnings>true</showWarnings>
</configuration>
</plugin>
</plugins>
<defaultGoal>compile</defaultGoal>
</build>
<!-- 依賴管理 -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-framework-bom</artifactId>
<version>4.2.4.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<!-- 列表依賴-->
<dependencies>
   <dependency>
<groupId>cglib</groupId>
      <artifactId>cglib-nodep</artifactId>
<version>3.2.0</version>
//依賴範圍
<scope>runtime</scope>
       </dependency>
</dependencies>
------------------------------------------------------------------
1 maven的setting配置文件中mirror和repository的區別:
簡單點來說,repository就是個倉庫。
maven裏有兩種倉庫,本地倉庫和遠程倉庫。遠程倉庫相當於公共的倉庫,大家都能看到。
本地倉庫是你本地的一個山寨版,只有你看的到,主要起緩存作用。
當你向倉庫請求插件或依賴的時候,會先檢查本地倉庫裏是否有。如果有則直接返回,否則會向遠程倉庫請求,並做緩存。


遠程倉庫可以在工程的pom.xml文件裏指定。
如果沒指定,默認會到這個地方去請求插件和依賴包。




<repository>  
      <snapshots>  
      <enabled>false</enabled>  
      </snapshots>  
      <id>central</id>  
      <name>Maven Repository Switchboard</name>  
      <url>
 </repository>  




本地倉庫默認在你本地的用戶目錄下的.m2/repository目錄下。




      mirror就是鏡像,主要提供一個方便地切換遠程倉庫地址的途徑。
比如,上班的時候在公司,用電信的網絡,連的是電信的倉庫。
回到家後,是網通的網絡,我想連網通的倉庫,就可以通過mirror配置,統一把我工程裏的倉庫地址都改成聯通的,而不用到具體工程配置文件裏一個一個地改地址。




mirror的配置在.m2/settings.xml裏。如:




<mirrors>  
  <mirror>  
    <id>UK</id>  
    <name>UK Central</name>  
    <url>
    <mirrorOf>central</mirrorOf>  
  </mirror>  
</mirrors>  




這樣的話,就會給上面id爲central的遠程倉庫做了個鏡像。
以後向central這個倉庫發的請求都會發到而不是了。



發佈了125 篇原創文章 · 獲贊 6 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章