maven简单使用

入门教程:maven实战
地址: http://wenku.baidu.com/view/80e4c3136edb6f1aff001fdd.html

maven下载地址 http://maven.apache.org/download.html

安装上面的连接里比较详细

eclipse插件http://m2eclipse.sonatype.org/

Eclipse默认是运行在JRE上的,而m2eclipse的一些功能要求使用JDK,解决方法是配置Eclipse安装目录的eclipse.ini文件,添加vm配置指向JDK
-vm
D:\java\jdk1.6.0_07\bin\javaw.exe
还有一种方法在eclipse中指定jre为jdk目录下的jre,不是默认的jre

不要使用ide内嵌的maven
无论是Eclipse还是NetBeans,当我们集成Maven时,都会安装上一个内嵌的Maven,这个内嵌的Maven通常会比较新,但不一定很稳定,而且往往也会和我们在命令行使用的Maven不是同一个版本。这里有会出现两个潜在的问题:首先,较新版本的Maven存在很多不稳定因素,容易造成一些难以理解的问题;其次,除了IDE,我们也经常还会使用命令行的Maven,如果版本不一致,容易造成构建行为的不一致,这是我们所不希望看到的。因此,我们应该在IDE中配置Maven插件时使用与命令行一致的Maven。

新建maven项目
filter:maven-archetype-quickstart 使用这个创建默认项目结构

pom.xml中groupId,artifactId和version三行。这三个元素定义了一个项目基本的坐标,在Maven的世界,任何的jar、pom或者war都是以基于这些基本的坐标进行区分的。

    groupId定义了项目属于哪个组,这个组往往和项目所在的组织或公司存在关联,譬如你在googlecode上建立了一个名为myapp的项目,那么groupId就应该是com.googlecode.myapp,如果你的公司是mycom,有一个项目为myapp,那么groupId就应该是com.mycom.myapp。本书中所有的代码都基于groupId com.juvenxu.mvnbook

    artifactId定义了当前Maven项目在组中唯一的ID,我们为这个Hello World项目定义artifactId为hello-world,本书其他章节代码会被分配其他的artifactId。而在前面的groupId为com.googlecode.myapp的例子中,你可能会为不同的子项目(模块)分配artifactId,如:myapp-util、myapp-domain、myapp-web等等。 

    顾名思义,version指定了Hello World项目当前的版本——1.0-SNAPSHOT。SNAPSHOT意为快照,说明该项目还处于开发中,是不稳定的版本。随着项目的发展,version会不断更新,如升级为1.0、1.1-SNAPSHOT、1.1、2.0等等。本书的6.5小节会详细介绍SNAPSHOT,第13章介绍如何使用Maven管理项目版本的升级发布。

    最后一个name元素声明了一个对于用户更为友好的项目名称,虽然这不是必须的,但我还是推荐为每个POM声明name,以方便信息交流。


<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.7</version>
<scope>test</scope>
</dependency>
上述POM代码中还有一个值为test的元素scope,scope为依赖范围,若依赖范围为test则表示该依赖只对测试有效,换句话说,测试代码中的import JUnit代码是没有问题的,但是如果我们在主代码中用import JUnit代码,就会造成编译错误。如果不声明依赖范围,那么默认值就是compile,表示该依赖对主代码和测试代码都有效

为了生成可执行的jar文件,我们需要借助maven-shade-plugin

使用Archetype生成项目骨架


建立maven子模块, parent的packagin,新建maven项目后删除src
建立子模块时会在eclipse中生成新的项目

maven官网配置方法 http://maven.apache.org/guides/introduction/introduction-to-the-pom.html

依赖jar包的版本控制
<properties>
    <arguments />

    <!-- Maven Plugins -->
    <version.apache.rat.plugin>0.8</version.apache.rat.plugin>
    <version.api.plugin>3.0.4</version.api.plugin>
    <version.assembly.plugin>2.3</version.assembly.plugin>
    <version.build.helper.plugin>1.7</version.build.helper.plugin>
    <version.bundle.plugin>2.3.7</version.bundle.plugin>
</properties>


依赖jar这么写
<dependency>
        <groupId>jdom</groupId>
        <artifactId>jdom</artifactId>
        <version>${version.jdom}</version>
        <optional>true</optional>
      </dependency>


配合<dependencyManagement>,子模块不用写版本号了

猜你喜欢

转载自qifan.iteye.com/blog/2076174
今日推荐