java-maven

3.1. Maven

3.1.1. Maven介绍

  • 我们使用maven构建应用环境,因此我们先来简单介绍maven。Maven是什么?如何回答这个问题 要看你怎么看这个问题。 绝大部分Maven用户都称Maven是一个"构建工具":一个用来把源代码构建成可发布的构件的工具。构建工程师和项目经理会说Maven是一个更复杂 的东西:一个项目管理工具。那么区别是什么? 像Ant这样的构建工具仅仅是关注预处理,编译,打包,测试和分发,而 Maven 这样的一个项目管理工具提供了构建工具所提供功能的超集, 除了提供构建的功能,Maven还可以生成报告,生成Web站点,并且帮助推动工作团
    队成员间的交流。
  • Maven目前最新版本是2.1.0. 因为maven2.0的版本与maven1.0相比完全是重新设计的,而且速度比以前更快,所以称为 maven2. 目前很多的开源项目都已经采用maven2构建,足见其流行好用的程度。 注:本指南中所提及的maven均指maven2。

3.1.2. Maven常用命令

  • mvn archetype:create :创建 Maven 项目
  • mvn compile :编译源代码
  • mvn test-compile :编译测试代码
  • mvn test : 运行应用程序中的单元测试
  • mvn site : 生成项目相关信息的网站
  • mvn clean :清除目标目录中的生成结果
  • mvn package : 依据项目生成 jar 文件
  • mvn install :在本地 Repository 中安装 jar
  • mvn eclipse:eclipse :生成 Eclipse 项目文件
  • mvn -Dmaven.test.skip=true : 忽略测试文档编译

3.2. POM

POM全称是Project Object Model,即项目对象模型。pom.xml是maven的项目描述文件,它类似与antx的project.xml文件。pom.xml文件以xml的 形式描述项目的信息,包括项目名称、版本、项目id、项目的依赖关系、编译环境、持续集成、项目团队、贡献管理、生成报表等等。总之,它包含了所有的项目 信息。

3.2.1. 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/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>org.codehaus.mojo</groupId>
  <artifactId>my-project</artifactId>
  <version>1.0</version>
</project>

modelVersion 描述这个POM文件是遵从哪个版本的项目描述符。

groupId 针对一个项目的普遍唯一识别符。通常用一个完全正确的包的名字来与其他项目的类似名字来进行区分(比如:org.apache.maven)。

artifactId 在给定groupID 的group里面为artifact 指定的标识符是唯一的 , artifact 代表的是被制作或者被一个project应用的组件(产出物)。

version 当前项目产生的artifact的版本

以上4个元素缺一不可,其中groupId, artifactId, version描述依赖的项目唯一标志。

3.2.2. pom.xml文件结构

<project>
  <modelVersion>4.0.0</modelVersion>
  <!- The Basics   项目的基本信息->
  <groupId>...</groupId>
  <artifactId>...</artifactId>
  <version>...</version>
  <packaging>...</packaging>
  <dependencies>...</dependencies>
  <parent>...</parent>
  <dependencyManagement>...</dependencyManagement>
  <modules>...</modules>
  <properties>...</properties>
  <!- Build Settings  项目的编译设置->
  <build>...</build>
  <reporting>...</reporting>
  <!- More Project Information 其它项目信息 ->
  <name>...</name>
  <description>...</description>
  <url>...</url>
  <inceptionYear>...</inceptionYear>
  <licenses>...</licenses>
  <organization>...</organization>
  <developers>...</developers>
  <contributors>...</contributors>
  <!-- Environment Settings  ->
  <issueManagement>...</issueManagement>
  <ciManagement>...</ciManagement>
  <mailingLists>...</mailingLists>
  <scm>...</scm>
  <prerequisites>...</prerequisites>
  <repositories>...</repositories>
  <pluginRepositories>...</pluginRepositories>
  <distributionManagement>...</distributionManagement>
  <profiles>...</profiles>
</project>

project是pom.xml的根节点,至于其它元素请参考POM Reference

3.2.3. POM很重要的3个关系

POM有3个很重要的关系:依赖、继承、合成。

3.2.3.1. 依赖关系

<dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.0</version>
      <type>jar</type>
      <scope>test</scope>
      <optional>true</optional>
    </dependency>
    ...
</dependencies>

如果想依赖一个maven库中没有的一个jar包,方法很简单,就是先将此jar包使用以下的命令安装到本地maven库中:

mvn install:install-file -Dfile=my.jar -DgroupId=mygroup -DartifactId=myartifactId -Dversion=1

再把依赖关系加进去即可。

3.2.3.2. 继承关系

另一个强大的变化, maven带来的是项目继承。

3.2.3.2.1. 定义父项目
<project>
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.mygroup </groupId>
  <artifactId>my-parent</artifactId>
  <version>2.0</version>
  <packaging>pom</packaging>
</project>

packaging 类型,定义值为 pom用于定义为parent和合成多个项目。 当然我们创建的maven项目的pom都继承maven的super pom, 如果想看项目(父或子)的完全的pom结构,可以运行:

mvn help:effective-pom

就可以了。

3.2.3.2.2. 子项目配置
<project>
   <modelVersion>4.0.0</modelVersion>
   <groupId>com.mygroup </groupId>
   <artifactId>my-child-project</artifactId>
   <parent>
        <groupId>com.mygroup </groupId>
        <artifactId>my-parent</artifactId>
        <version>2.0</version>
        <relativePath>../my-parent</relativePath>
    </parent>
</project>

relativePath可以不需要,但是用于指明parent的目录,用于快速查询。

3.2.3.3. 合成关系

一个项目有多个模块,也叫做多重模块,或者合成项目。 如下的定义:

<project>
   <modelVersion>4.0.0</modelVersion>
   <groupId>com.mygroup </groupId>
   <artifactId>my-parent</artifactId>
   <version>2.0</version>
   <modules>
       <module>my-child-project1<module>
       <module>my-child-project2<module>
   </modules>
</project>

其中module 描述的是子项目的相对路径 。

3.2.4. dependencyManagement和Profile

        Maven 还我们提供了一个dependencyManagement元素,用来提供了一种方式来统一依赖版本号。dependencyManagement元素一 般用在顶层的父POM。使用pom.xml中的dependencyManagement元素能让你在子项目中引用一个依赖而不用显式的列出版本号。 Maven会沿着父子层次向上走,直到找到一个拥有dependencyManagement元素的项目,然后它就会使用在这个 dependencyManagement元素中指定的版本号,这样就解决了修改依赖版本号不完全的问题。

        Maven的Profile元素可以为一个特殊的环境自定义一个特殊的构建,使得不同环境间构建的可移植性成为可能。比如要使用 production profile来运行mvn install,你需要在命令行传入-Pproduction参数,这里production是profile的id。要验证production profile覆盖了默认的Compiler插件配置,可以像这样以开启调试输入(-X) 的方式运行Maven。

时间: 2024-07-29 10:52:16

java-maven的相关文章

Linux Shell脚本之远程自动化部署java maven项目

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://dgd2010.blog.51cto.com/1539422/1771555 脚本功能: 检查运行环境(包括运行权限.网络.DNS解析等),自动从git上获取java maven项目工程源码,在机器A上build,build完成后,备份机器B上原有的配置文件(如果存在),将Class.Lib文件和备份的配置文件等上传到机器B,重新启动机器B上的服务以便变更生效. 脚本特点: 1.

求解 啊 java maven项目

问题描述 求解 啊 java maven项目 [INFO] Scanning for projects... [INFO] Downloading: http://localhost/nexus-2.7.0-06/content/groups/public/org/codehaus/mojo/tomcat-maven-plugin/1.1/tomcat-maven-plugin-1.1.pom [WARNING] Failed to retrieve plugin descriptor for

[教程]西秦的ACE-JAVA教程一、JAVA MAVEN环境搭建

首先是配置JDK 1.7      1.        到Oracle 官网下载 JDK 1.7 安装包.  下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html     2.        下载好JDK安装包,并安装.一路Next装下去     3.        安装完成后,需要设置变量环境,首先设置JAVA_HOME.右键单击计算机->属性->高级系统设置->

Mac配置JAVA/MAVEN开发环境教程

配置JAVA_HOME: 用户目录下opne .bash_profile 如果没有这个文件可以自己创建一个 可以了解下mac下的配置文件 ./etc/profile 文件   全局共有配置,无论哪个用户登录,都会读取此文件/etc/bashrc    (一般在这个文件中添加系统级环境变量)全局(公有)配置,bash shell执行时,不管是何种方式,都会读取此文件.~/.bash_profile  (一般在这个文件中添加用户级环境变量) 配置环境: MAVEN_HOME=/Users/taoyu

JAVA Maven和ANT 安装

JDK安装 http://blog.csdn.net/fenglailea/article/details/26006647 环境变量设置 http://blog.csdn.net/fenglailea/article/details/52457731 风.fox YUM 临时代理 命令行中先执行如下命令,然后再执行yum xxx命令 export http_proxy="http://10.1.5.50:9999" http://10.1.5.50:9999 :代理服务器IP和端口

Java Maven简明

Maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具. 主页 http://maven.apache.org/  参考图书 [Maven实战  http://www.infoq.com/cn/minibooks/maven-in-action 内容简单,覆盖面也宽]   项目文件pom.xml依赖部分是最常使用的: groupId 告诉 Maven 资源库内哪个子目录中包含相关性文件. artifactId 告诉 Maven 该构件的唯一标

Java的项目构建工具Maven的配置和使用教程_java

一.Maven是什么 Maven是一个用java开发的项目构建工具, 它能使项目构建过程中的编译.测试.发布.文档自动化, 大大减轻了程序员部署负担. 二.安装Maven 安装maven非常简单,访问Maven官方页下载即可:http://maven.apache.org/download.cgi 下载完后配置M2_HOME环境变量, 然后终端运行mvn --version, 看到正确的输出提示,Maven就安装完成了. 三.Maven基本概念Maven的核心思想是POM, 即Project O

配置pom.xml用maven打包java工程的方法(推荐)_java

最近由于项目需要,研究了一下maven的打包,项目要做到 1,生成3个目录/lib,/conf,/bin目录 2,把所有的jar目录编译.拷贝到/lib目录(包括maven的jar包和lib目录下的jar,以及编译的jar包) 3,把所有的启动脚本从工程根目录拷贝到/bin目录 4,把所有的配置文件从src/main/resources拷贝到/conf  下面是配置的pom.xml,我把相关的配置都加了注释,一看就能明白,把build节点拷贝到你们的项目中,就基本可以用了:) <project

Maven插件之build-helper-maven-plugin

把原有项目添加到Maven管理时,总会出现很多莫名奇妙的问题,其中之一便是Maven默认的项目结构 和自己的项目结构不一致,导致无法编译源代码,更不用说部署.运行项目了. Java程序开发,一般使用Eclipse.MyEclipse等工具,其源码目录为src,这与Maven默认的 src/main/java不同.因此,在没有额外配置的情况下,使用Maven命令无法完成代码的编译. 针对这种情况,codehaus提供了build-helper-maven-plugin插件来支持自定义的项目目录结构

【Maven由浅入深】2.maven安装的注意事项

这次主要讲解了 (1)安装本地仓库 (2)找到网络中央仓库的路径 (3)archetype骨架生成器 上次我们安装了Maven,并且创建并编译了一个简单的额项目.我们了解了,Maven工程依赖的所有jar包以及插件文件都放置在仓库中,而这个仓库默认为C:/盘下的用户"文档"文件夹内. 使用默认的仓库配置并不是最佳选择,因为我们的仓库放置在C盘,随着工程的丰富,我们的仓库将会越来越大,C盘一般是系统盘,会占用我们的系统资源,再者,我们重装系统的时候,会将仓库清理掉,所以,我们还是自己修改