maven

来源:互联网 发布:mac安装win10激活码 编辑:程序博客网 时间:2024/06/01 08:49



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这个仓库发的请求都会发到而不是了。



原创粉丝点击