`
wanxiaotao12
  • 浏览: 456050 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Maven学习

 
阅读更多

groupId,artifactId,packaging,version 是Maven的坐标, 它们唯一标识了一个项目,name,url是pom提供的描述性元素,它们给人提供可阅读的名字

groupId:团体名,组织名

artifactId:在groupId下表示一个单独项目的唯一标识

version:版本号, 加SNAPSHOT表示正在开发中

packaging:项目类型,默认为jar,打包后文件格式。类型为jar的,输出jar文件,类型为war的项目,生成一个web应用

1、创建最简单的项目

在d:project下创建

命令:mvn archetype:create -DgroupId=ce.demo.mvn -DartifactId=demo

执行命令后, 就会在d:project创建文件夹为demo的项目

项目名:默认为-DartifactId=demo指定的名

java包名:默认为-DgroupId=ce.demo.mvn指定的名, 但也可以指定包名使用参数:-DpackageName=com.demo.mvn2

 

1、Maven插件和目标

命令:mvn archetype:create -DgroupId=ce.demo.mvn -DartifactId=demo

 

archetype称为插件

create称为目标(即明确的任务)

 

一个插件包多个目标

上条命令中, create目标定义了一个配置属性archetypeArtifactId,它有一个默认值maven-archetype-quickstart。maven-archetype-quickstart生成一个最小项目的躯壳,包括一个POM和一个类。Archetype插件可以用来生成复杂如web应用的项目,以及使用Archetype插件自定义自己的项目集合。

mvn archetype:create -DgroupId=ce.demo.mvn -DartifactId=demo -DarchetypeArtifactId=maven-archetype-quickstart

 

2、在pom.xml所在的文件下执行

mvn package   打包,生成jar文件

mvn install 安装到本地仓库

 

3、Maven本身不知道如何编译你的代码,不知道如何生成jar文件,它将这些任务交给了Maven插件,如Compiler插件和Jar插件,在需要的时候,将它们下载, 并定时的从Maven中央仓库更新。当你下载Maven的时候,只是一个基本躯壳的Maven核心,它知道如何解析命令行,管理classpath,解析POM文件,在需要的时候下载Maven插件。这样,Maven核心与插件分离。

 

4、一个生命周期的阶段可能绑定多个目标,如:mvn package 有多个目标被执行, 当执行mvn package时, package以前的生命周期也被执行

 

5、Maven仓库存放的文件目录格式:

/groupId/artifactId/verfsion/<artifactId>-<version>.<packaging>

 

6、Maven依赖有传递性,A依赖B,B依赖C,D,  那么只需要定义A依赖B即可,

 

7、创建的简单项目中依赖junit, 在.m2/repository/junit/junit/3.8.1下有junit-3.8.1.jar和junit-3.8.1.pom(定性所依赖的),还有Maven用来验证已下载构件准确性的校验和文件

 

8、当为项目创建jar文件时,它的依赖不会被一起在生成的构件中,只是将当前的项目java文件编译

 

9、当用Maven生成war,可以配置Maven,将所依赖的构件也包含进来。

如:依赖的Servlet 想在编译的时候需要,生成war包时,不将servlet包含进来,可以给依赖的servlet设置provided范围,这样在编译的时候使用, 在生成war包时,不将其包含在war包中

 

10、mvn archetype:create -DgroupId=org.sonatype.mavenbook.ch04 -DartifactId=simple-weather -DpackageName=org.sonatype.mavenbook -Dversion=1.0

 

11、可在在pom.xml文件中,定义组织,法律,开发人员信息

 

12、archiveClasses 将资源文件打成jar形式,testFailureIgnore忽略测试失败

 

    <build>

       

        <plugins>

            <plugin>

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

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

                <version>2.1-beta-1</version>

                <configuration>

   <!-- archiveClasses 将资源文件打成jar形式 -->

                    <archiveClasses>true</archiveClasses>

                </configuration>

            </plugin>

        </plugins>

    </build>

 

<plugin>

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

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

  <configuration>

    <testFailureIgnore>true</testFailureIgnore>

  </configuration>

</plugin>

 

13、跳过单元测试

<plugin>

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

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

    <configuration>

        <skip>true</skip>

    </configuration>

</plugin>

 

14、archetypeArtifactId=maven-archetype-webapp

mvn archetype:create -DgroupId=com.jd.card -DartifactId=card -DarchetypeArtifactId=maven-archetype-webapp -Dversion=1.0

 

15、子模块中只设置artifactId, groupId和version没有设置,默认从父模块继承了。实际上子模块从父模块继承一切东西,包括依赖,插件配置等等。

 

16、version的值为${project.version},这个值是一个属性引用,指向了POM的project/version的值,也就是这个POM对应的version,依赖其他模块时使用, 使得各模块的版本号是一致的。

 

17、依赖范围

compile(默认,对于编译、测试、运行三种classpath都有效)、test: 测试依赖范围(JUnit)、provided: 已提供依赖范围。使用此依赖范围的Maven依赖,对于编译和测试classpath有效,但在运行时无效。典型的例子是servlet-api,编译和测试项目的时候需要该依赖,但在运行项目的时候,由于容器已经提供,就不需要Maven重复地引入一遍。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics