Maven学习笔记

引言:Mavne相必大多数java开发者都比较熟悉;可以将它理解为一个项目的管理工具,它是一个可以两三行代码就可构建简单的项目;它包含了一个项目对象模型 (Project Object Model)pom.xml文件,一组标准集合,一个项目生命周期,一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件目标(goal)的逻辑。当你使用Maven的时候,你用一个明确定义的项目对象模型来描述你的项目,然后Maven可以应用横切的逻辑,这些逻辑来自一组共享的(或者自定义的)插件。由于Maven是面向项目的构建方法使得其很快替代了Ant成为了现在主流的java项目管理工具:Maven 有一个生命周期,当你运行 mvn install 的时候被调用。这条命令告诉 Maven 执行一系列的有序的步骤,直到到达你指定的生命周期。遍历生命周期旅途中的一个影响就是,Maven 运行了许多默认的[插件]目标,这些目标完成了像编译和创建一个 JAR 文件这样的工作。
一:Maven和Ant的区别和联系:
A:标准构建文件
Maven:project.xml 和 maven.xml  
Ant:build.xml
** B:特性处理顺序**
Maven:
${maven.home}/bin/driver.properties
${project.home}/project.properties
${project.home}/build.properties
${user.home}/build.properties
Ant:
通过 -D 命令行选项定义的系统特性
最后一个定义起决定作用。
通过 -D 命令行选项定义的系统特性
由 任务装入的特性
第一个定义最先被处理。
C:构建规则
Maven
构建规则更为动态(类似于编程语言);它们是基于 Jelly 的可执行 XML。
Ant
构建规则或多或少是静态的,除非使用<script>任务
D:扩展语言  
Maven
插件是用 Jelly(XML)编写的。
Ant
插件是用 Java 语言编写的。
E:构建规则可扩展性
Maven
通过定义 <preGoal> 和 <postGoal> 使构建 goal 可扩展。
Ant
构建规则不易扩展;可通过使用 <script> 任务模拟 <preGoal> 和 <postGoal> 所起的作用。
二:Maven的各种命令:
mvn archetype:create 创建Maven项目
mvn compile 编译源代码
mvn deploy 发布项目
mvn test-compile 编译测试源代码
mvn test 运行应用程序中的单元测试
mvn site 生成项目相关信息的网站
mvn clean 清除项目目录中的生成结果
mvn package 根据项目生成的jar
mvn install 在本地Repository中安装jar
mvn eclipse:eclipse 生成eclipse项目文件
mvnjetty:run 启动jetty服务
mvntomcat:run 启动tomcat服务
mvn clean package -Dmaven.test.skip=true:清除以前的包后重新打包,跳过测试类
三:关于Mavne的仓库
Maven主要有两个仓库:一个中央仓库和一个本地仓库
如何更改maven本地仓库的地址:
默认情况下本地仓库在~(用户目录)/.m2/
setting.xml;更改这个文件;
<localRepository>具体路径</localRepository>
中央仓库是由专门的组织维护的;里面包含了基本上所有的开源的java插件;
而本地仓库是建立在你自己的电脑上的;我们在创建一个Maven项目并执行maven相关命令之后,这个仓库便会自动建立;然后我们在自己项目的pom文件中去配置我们依赖的各种插件;

<!--依赖的各种插件-->
<dependencies>
    <!--每种插件的坐标-->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>3.1.0</version>
    </dependency>
  </dependencies>

四:如何建立自己的私服:
推荐使用Nexus搭建Maven私服;
前往http://www.sonatype.org/nexus
1:首先我们需要下载一个Nexus插件;
2:安装这个插件(一定要以管理员的身份去运行脚本Nexus-install.bat)
3:(如果安装过程没有任何问题)启动插件;如果运行过程中出现问题一般情况都是端口被占用了;这时我们需要在conf.xml去更改相关端口;然后也浏览器中输入地址"http://localhost:8082/nexus/"
访问我们所启动的容器jetty然后登录网址:账户admin/密码admin123;等进去之后几个将我们central的Download Remote Indexes设置为true;
4:此时我们可以在我们项目的.m2的setting.xml文件中去配置这个私服

 <!--这些是将我们自己建立的项目发布到中:在需要安装的项目的pom文件层使用mvn clean deploy-->
<server>    
  <server>
      <id>releases</id>
      <username>admin</username>
      <password>admin123</password>
    </server>
    <server>
      <id>snapshots</id>
      <username>admin</username>
      <password>admin123</password>
    </server>
  </servers>
<mirrors>
   <mirror>
      <id>nexus</id>
      <mirrorOf>*</mirrorOf>
      <url>http://localhost:8082/nexus/content/groups/public/</url>
     </mirror>
  </mirrors>
<profile>  
      <id>nexus</id>  
      <repositories>  
        <repository>  
          <id>central</id>  
          <url>http://central</url>  
          <releases>
            <enabled>true</enabled>
          </releases>  
          <snapshots>
            <enabled>true</enabled>
          </snapshots>  
        </repository>  
      </repositories>  
      <pluginRepositories>  
        <pluginRepository>  
          <id>central</id>  
          <url>http://central</url>  
          <releases>
            <enabled>true</enabled>
          </releases>  
          <snapshots>
            <enabled>true</enabled>
          </snapshots>  
        </pluginRepository>  
      </pluginRepositories>  
    </profile>

5:接下来在我们需要发布的项目的pom.xml文件中配置:

<!-- 配置自己的私服 -->
    <repositories>  
        <repository>  
          <id>chenpengNexus</id>  
          <name>chenpeng Repositories</name>
          <url>http://localhost:8082/nexus/content/repositories/central/</url>  
          <releases>
            <enabled>true</enabled>
          </releases>  
          <snapshots>
            <enabled>true</enabled>
          </snapshots>  
        </repository>  
      </repositories>  
 <distributionManagement>
    <!-- 将自己的构件发布到私服的releases仓库中 -->
    <repository>
        <id>releases</id>
        <name>nexus releases </name>
        <url>http://localhost:8082/nexus/content/repositories/releases/</url>
    </repository>
    <!-- 将自己的构件发布到私服的snapshot镜像中 -->
    <snapshotRepository>
        <id>snapshots</id>
        <name>nexus snapshots</name>
        <url>http://localhost:8082/nexus/content/repositories/snapshots/</url>      
    </snapshotRepository>
  </distributionManagement>

6:对于某些找不到的jar包中;我们需要手工上传到3rd party的仓库中(这个在我们创建的私服的网站下面)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,783评论 5 472
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,396评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 147,834评论 0 333
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,036评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,035评论 5 362
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,242评论 1 278
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,727评论 3 393
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,376评论 0 255
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,508评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,415评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,463评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,140评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,734评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,809评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,028评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,521评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,119评论 2 341

推荐阅读更多精彩内容

  • 阅读《Maven实战》许晓斌的一些笔记,便于自己和道友查阅 maven依赖 maven具有传递性依赖,比如 A 依...
    tenlee阅读 521评论 0 0
  • |-1-更新内容[6.从仓库解析依赖的机制(重要)] 1Maven仓库作用 仓库用来存储所有项目使用到构件,在ma...
    zlcook阅读 6,012评论 0 25
  • maven坐标 maven的构件(jar包)是根据坐标来确定其在仓库的保存位置的。maven的坐标是通过以下元素来...
    Joepis阅读 533评论 0 4
  • maven构件:artifact 生命周期阶段:phase 插件:plugin ->:单个或多个目标的集合 插件目...
    gengh阅读 628评论 2 2
  • 我是谁? 这个问题你问过自己吗?长这么大我们对于自己又了解多少呢?我就很少问自己这个问题,也只有在特定的环境里才会...
    一张过去的CD阅读 237评论 0 0