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

maven2

阅读更多
(0)
maven安装:
首先当然去Apache网站下载Maven2了。下载地址:http://maven.apache.org/download.html
我下载的版本是apache-maven-2.2.1-bin.zip.
然后我把apache-maven-2.2.1- bin.zip.解压到D:\apache-maven-2.2.1
配置环境变量(同其它软件配置,如ant,svn):
1)MAVEN_HOME:D:\maven-2.0.4
2)在 Path 中加入%MAVEN_HOME%\bin
3)在命令行输入 Mvn -version
显示
Maven version: 2.2.1 则安装成功。
 
(1)
下面说一些Maven1.x和Maven2.x的不同:
Maven2 把配置文件压缩成了pom.xml和settings.xml 两个文件,简洁了不少。POM是Maven的核心对象模型,在Maven2中POM已由project.xml转移到pom.xml中使用,版本也由3升 级为4。对于项目,一般只需要pom.xml就行了。在Maven2中不需要也不提倡使用maven.xml
生命周期的引入
在Maven2中有了明确的生命周期概念,而且都提供与之对应的命令,使得项目构建 更加清晰明了。主要的生命周期阶段.

(2)
基本设置,打开maven根目录\conf\settings.xml
1. 改变<localRepository>E:/app/m2/repository</localRepository> .
目 的:改变本地的数据仓库目录(存放从远程下载的jar包),如果不改变也可以,如不改变,缺省目录为:C:\Documents and Settings\主机名\.m2\repository
(3)
体验maven
创建一个java project.
在命令行中,进入你常 用的项目文件夹,输入:
mvn archetype:create -DgroupId=com.mycompany.app -DartifactId=my-app
如果网络配置正确,maven就会下载需要的文件,执行任务,最终显示“BUILD SUCCESSFUL”,并生成my-app目录到你当前命令行所在的目录.
让我们看一下mvn对项目目录的组织:
My-app
├─pom.xml
└─src          (同目录下,可以有target目录)
├─main         (同目录下,可以有test目录)
│ └─java
│ └─com
│ └─mycompany
│ └─app
│ └─App.java
└─test        
└─java
└─com
└─mycompany
└─app
└─AppTest.java
可以看出,代码和测试代码 分别放在main及test文件夹下。
说明:
您会发现Maven在my-app目录下创建了一个pom.xml文件。这是项目的最基本部 分。pom.xml文件包含了一组指令,这些指令告诉Maven如何构建项目和包含哪些其它的特殊指令(POM是“项目对象模型”的缩写)。在默认的情况 下,Maven包含了JUnit的依赖以此来鼓励单元测试。如下:
<project>
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.mycompany.app</groupId>
  <artifactId>my-app</artifactId>     
  <packaging>jar</packaging>
  <version>1.0-SNAPSHOT</version>     
  <name>my-app</name>                 
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>
pom.xml元素分析:
poject 这是pom.xml的顶级元素。
modelVersion 这是元素指出了这个POM使用的是那个版本的对象模型。这个模型的版本自身么是经常改变的,但这种改变是为了使模型更加的稳定。
<groupId>: 一个项目群的ID,一个项目群可以包含多个项目
<artifactId>:一个项目的ID,是每个项目的唯一ID.
<version>: 描述了项目当前的版本.
此三个元素,组成了一个项目唯一的标记.

name 这个元素指出这个工程显示的名称。这个常用于Maven产生的文档中。
url 这个员算指出在哪里能发现工程的站点。这个常用于Maven产生的文档中。
desription 这个元素提供了这个工程基本的描述。这也常用于Maven产生的文档中。
(4)
maven命令
说明:
1)
当执行mvn的命令时,maven会从本地的私服(私人服务器)上找相关的 jar,若找不到,则到网上下载相应的jar且放到私服上。以后执行命令时,会发现执行时间会很快,因为maven直接从私服上获取jar.
2)
执 行关于项目的各命令时,要到项目的根目录下执行如下的命令,否则出错。提示找不到项目的pom.xml.
3)
执行以下各命令后,会在 src的同级目录下,生成一个target的目录,来存放各种结果。
在命令行下输入mvn -h , 显示mvn帮助,其中usage: mvn [options] [<goal(s)>] [<phase(s)>]表明了mvn命令的构成。
1.
Options:可选的参数。比如前面提到的-version , -h等。
2.
Goal(s): 表示maven构建的“目标”。
比如前面的mvn archetype:create -DgroupId=com.mycompany.app -DartifactId=my-app
其中archetype:create表示 archetype插件下的create目标。这里,插件是为了某种目的构建的目标的集合,maven通过插件扩展其功能。
还可以为目标传递一 些参数,比如上面的“-DgroupId=com.mycompany.app -DartifactId=my-app”。
3.
Phase(s): 阶段。表示maven构建生命周期 中的一个步骤。使用相位命令时,maven会执行生命周期中该阶段之前的所有命令,使项目处于指定的“状态”。
比 如在刚才创建的项目路径下输入mvn compile,会创建target文件夹,并编译class,使项目处于“已编译”状态。
maven定 义的生命周期中主要的相位如下:
validate: 验证项目是否正确以及相关信息是否可用。
compile: 编译。会生成存放到/target/classes目录.
mvn compile :编译源代码
mvn test-compile :编译测试代码

test: 通过junit进行单元测试。 会生成存放到/target/test-classes目录及执行verify命令.
package: 根据事先指定的格式(比如jar),进行打包。 会生成存放到/target目录下.
         执行此命令,会自动先执行compile,test等命令.
integration-test: 部署到运行环境中,准备进行集成测试。
verify: 对包进行有效性性和质量检查。会生成存放到/target/surefire-reports(存放单元测试报告)目录.
install: 安装到本地代码库: 默认会复制到本地的jar存放的地方。
deploy: 在集成或发布环境,将包发布到远程代码库。
在“默认”的生 命周期之外,还有两个“阶段”:
clean: 清除以前的构建物。 会删除整个target目录.
site: 生成项目文档。 会生成存放到/target/site目录.
-skipping的用法:
只测试而不编译,也不测试编译:mvn test -skipping compile -skipping test-compile (这里要特别注意 -skipping 的灵活运用,当然也可以用于其他组合命令)
generate-sources,产生应用需要的任何额外的源代码,如xdoclet。
mvn eclipse:eclipse:
此命令用于生成Eclipse项目文 件.classpath,.project,使项目可以直接由eclipse的import-->从现成的项目中导入.导入其它IDE的格式也一 样:mvn IDE名:IDE名.
出现的问题:
当建立一个工程后,执行 mvn eclipse:eclipse ,建立一个maven的工程,用eclipse打开后,发现报如下错误:Unbound classpath variable: 'M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar' in project my-webapp   ,这是因为在Eclipse 没有配置 M2_REPO 变量,配置步骤:window >> preferences >> Java >> Build Path >> Classpath Variables
新建一个 M2_REPO 的变量,变量值指向你系统的Maven2的数据仓库位置。
 
组合命令:
可以通过对目标及相位的组合使得一个命令完成多个功能,比如:
mvn clean dependency:copy-dependencies package
相当于按顺序执行
mvn clean
mvn dependency:copy-dependencies
mvn package
(5)
创建一个web project.
接下来我们看看稍微复杂点的地方,我们知道手动开始一个Java web项目比手动开始一个简单的Java项目更耗时,然而Maven的使用则能化难为易。下面的例子(实际上是一行命令)展现了项目结构的构造。
mvn archetype:create -DgroupId=com.web -DartifactId=webProject -DarchetypeArtifactId=maven-archetype-webapp
生成的结果结构如下所示:
webProject
----src
----main
----resources
----webapp
----WEB-INF
pom.xml(存 在于src的同级目录,即根目录中)内容:
<project>
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.web</groupId>
  <artifactId>webProject</artifactId>
  <packaging>war</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>webProject Maven Webapp</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
  <build>
    <finalName>webProject</finalName>
  </build>
</project>
可 见,现在默认的打包方式是war. 最后的<build>标签,用于设置war包的名称。

(6)
下面总结一下如何使用Maven2创建典型的三类项目:
普通的Java项目,如基础包等:
   mvn archetype:create   -DgroupId=com.yourcompany  -DartifactId=myproject  -DarchetypeArtifactId=maven-archetype-quickstart
普通的Web项目,如一个Web项目:
    mvn archetype:create  -DgroupId=com.yourcompany -DartifactId=myproject  -DarchetypeArtifactId=maven-archetype-webapp
Appfuse 中的Struts 2.0项目:
    mvn archetype:create -DarchetypeGroupId=org.appfuse -DarchetypeArtifactId=appfuse-basic-struts -DremoteRepositories=http://static.appfuse.org/repository -DarchetypeVersion=2.0-m4-SNAPSHOT -DgroupId=com.mycompany -DartifactId=myproject
(7)
依赖管理
为了给项目添加一个依赖项,必须将此依赖项添加到pom.xml文件中。下次运行Maven的时候,它将从 Ibiblio存储库中得到这个依赖项,并且将此依赖项添加到项目构建路径中。
如:
在Maven中使用依赖是简单的。让我们看看往上述 pom.xml文件中添加一个依赖项的情况。我们虽然已经使用了JUnit,但让我们将功能强大的Quartz库添加到项目中。Quartz是一款用纯 Java编写的关于时间安排的开源项目,它是您时间安排需求方面的很好的选择。
<dependency>
<groupId>quartz</groupId>
<artifactId>quartz</artifactId>
<version>1.5.1</version>
<scope>compile</scope>
</dependency>
我 们仅仅只需添加<dependencies>这个元素,Maven就能下载Quartz并将其作为项目中的一个依赖项。不用担心Quartz 的依赖项,一个Maven的存储库将包含依赖项自身依赖的资源信息,当Maven下载Quartz的时候,它自身的依赖资源也同样会被下载。为了验证版本 为1.5.1的Quartz存在于Ibiblio库中,我们可以浏览Maven存储库。注意到scope参数的使用,它告诉了Maven依赖项在何种阶段 是所需的。在使用JUnit的情况下,我们设置scope参数的值为test来告诉Maven这个依赖项只是在测试阶段所需的,而不是运行时所需的资源。 以下是scope参数值的说明:
--compile,缺省值,适用于所有阶段,会随着项目一起发布。
--provided,类似 compile,期望JDK、容器或使用者会提供这个依赖。如servlet.jar。
--runtime,只在运行时使用,如JDBC驱动, 适用运行和测试阶段。
--test,只在测试时使用,用于编译和运行测试代码。不会随项目发布。
--system,类似 provided,需要显式提供包含依赖的jar,Maven不会在Repository中查找它。
依赖下载后,存在在本地jar库的规则是根据pom.xml中<dependency>的定义,如:
<dependency>
<groupId>quartz</groupId>
<artifactId>quartz</artifactId>
<version>1.5.1</version>
<scope>compile</scope>
</dependency>
dependency 节点中groupId对应路径中第一层目录,artifactId对应第二层,version对应第三层.
/jar库根目录 /quartz/quartz/1.5.1/
(8)
8.1
设置maven的编译参数
如上例中的my-app,添加build标签后的内容如下:
<project>
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.mycompany.app</groupId>
  <artifactId>my-app</artifactId>
  <packaging>jar</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>my-app</name>
  <url>http://maven.apache.org</url>
<build> <!-- 项目的构建信息 -->
  <sourceDirectory>src\main</sourceDirectory>
  <testSourceDirectory>src\test</testSourceDirectory>
  <outputDirectory>target\jasonClasses</outputDirectory>
  <testOutputDirectory>target\jasonTest-classes</testOutputDirectory>
  <directory>jasonJars</directory> <!-- 构建后生成文件(jar,site等)所在位置 -->
  <finalName>jasonJAVAProject</finalName>

</build>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>
这样,在执行mvn package时,则maven会:
将 源码目录(src\main)中的东西编译到target\jasonClasses目录下;
将源码目录(src\test)中的东西编译到 target\jasonTest-classes目录下;
将最后jar打包文件放于根目录下的jasonJars目录下,且名称 为"jasonJAVAProject".
8.2
对于web项目,可以设置资源文件的相关参数:
<build>
 <resources><!-- 存放资源文件。这里的文件不需要编译,在部署打包时,直接复制这里的文件 -->
  <resource>
    <directory>src/resources</directory>
    <!--例外的文件类型。如果这里存放有.java文件,则仍然需要编译。  -->
    <excludes>
      <exclude>**/*.java</exclude>
    </excludes>
  </resource>
 </resources>

</build>
这样, 可以设置在打包war时,要加载哪些资源文件.

(9)
如何处理那些麻烦的Sun的jar包和那些需要但却不能在远程存储库中找到的jar包了?我们必须先下载这些jar包, 再使用Maven来手动将这些jar包安装到本地的存储库中。
如何把dwr.jar包上传到本地数据仓库的例子:
1.下载dwr.jar 包到本地,我把它放到了 C:/ (C盘根目录)
2.进入“命令行提示符”,进入到C:/,然后执行:
 mvn install:install-file -Dfile=dwr.jar -DgroupId=dwr.mocha -DartifactId=dwrDart -Dversion=1.0 -Dpackaging=jar
这样就把dwr传到了本地仓库中,上 传到仓库中的jar包名为dwrDart-1.0.jar,目录结构为dwr/mocha/dwrDart/1.0/dwrDart-1.0.jar.
 
(10)eclipse中maven插件的使用
1.直接在Eclipse 中安装插件,操作步骤
    Open Eclipse, Help -> Install New Software ... -> Add
    Name: Maven2
    Location: http://m2eclipse.sonatype.org/sites/m2e
2.修改Eclipse中关于Maven的配置:  
Window -> Preferences 在左边的树中查找到 Maven > Installations ,修改 "User Settings",查询到Maven安装目录下conf/settings.xml文件即可。
若不用这种方式,也可以用以下两种方式:
要让eclipse知道Maven 2的repository(仓库)的路径。
a.
因此要设置一个M2_REPO的变量为 classpath。可以使用命令行的方式来设置:
mvn -Declipse.workspace=<path-to-eclipse-workspace> eclipse:add-maven-repo
b.
还可以在eclipse中定义一个新的classpath变量通过在eclipse的 菜单上选择Window> Preferences. 选择Java > Build Path > Classpath Variables page.
3.
创建导入maven项目:
  a先在命令行模式下,用mvn去创建一个java/web/ssh项目;
  b再用mvn eclipse:eclipse;
  c最后在eclipse中import--从已存在的项目导入,将项目导入到eclipse中;
  d工程导入后,其左上角并没有标记。右键选择项目--maven2--enable dependencies management.当添加依赖管理后,会在其左上角出现一个“M”。
   e当你在eclipse中的pom.xml中添加新的<denpency>,保存后,eclipse会自动下载。 下载完后,可以在项目中的左栏的(project explorer)maven dependencies中看到。若删除此依赖,则会同时从maven dependencies删除。
   f,在eclipse中的maven工程,每创建一个目录后,须在java build path--source--add folder,将其显示出来;若要调整目录顺序,要切换到java build path--source--order and export中,进行调整.
附加说明:
java build path-->source-->add Folder界面:
此界面用于添加一个文件夹到java项目中。也可以用于隐藏,显示文件于eclipse中。
当选中时,即可到 eclipse中看到,否则只能在文件系统中找到,在eclipse中看不到。
java build path-->project界面:
用于导入另一项目,来 作为当前项目的依赖类库。
4.
安装maven无法在线下载的依赖包到本地仓库,实例如下:
若出错信息:
10-4-18 上午11时22分27秒: Missing artifact javax.transaction:jta:jar:1.0.1B:compile
其上格式 是:DgroupId:DartifactId:Dpackaging:Dversion
故以下添加时,相应的信息设置如下:
1)
mvn install:install-file -DgroupId=javax.transaction -DartifactId=jta -Dversion=1.0.1B -
Dpackaging=jar -Dfile=E:\workspaces\appfuse\myapp\lib\hibernate-3.1.3\lib\jta.jar
则会 在本地库里创建:-DgroupId路径/-DartifactId/-Dversion/.即:
E:\apache-maven-2.2.1\jarFromNet\javax\transaction\jta\1.0.1B
2)
然 后再在eclipse中点击update denpendencies即可.
3)
另外说明:若在eclipse中run as--mvn install,也就是调用了以上的安装命令,将当前项目打包后,放到本地的仓库中:
在命令行执行mvn install,如:
当执行maven命令时,会在console中显示执行的结果。[INFO] Installing E:\apache-maven-2.2.1\workspaceAddMyself\jasonMaven\target\jasonMaven.war to
E:\apache-maven-2.2.1\jarFromNet\com\webproject\jasonMaven\1.0-SNAPSHOT\jasonMaven-1.0-SNAPSHOT.war
即 将war包上传到本地的资源库中。
5。
可用项目骨架有:
* maven-archetype-archetype
* maven-archetype-j2ee-simple
* maven-archetype-mojo
* maven-archetype-portlet
* maven-archetype-profiles (currently under development)
* maven-archetype-quickstart
* maven-archetype-simple (currently under development)
* maven-archetype-site
* maven-archetype-site-simple, and
* maven-archetype-webapp
分享到:
评论

相关推荐

    maven2离线安装包

    标题“maven2离线安装包”指的是针对Maven 2的不依赖网络环境的安装包,主要用于在没有互联网连接或者网络环境不稳定的情况下安装和使用Maven。Maven是一个项目管理和综合工具,它简化了Java项目的构建、依赖管理和...

    Maven 2 Eclipse Plugin

    Maven 2 Eclipse Plugin 是一个强大的开发工具,它将Apache Maven的构建功能与Eclipse IDE紧密集成,使得Java开发者能够在Eclipse环境中无缝地管理项目依赖、构建和测试。这个插件极大地简化了Maven项目的配置和管理...

    maven2 的eclipse插件

    maven2的eclipse插件 for eclipse 3.5+。 插件安装时,我们只需在eclipse根目录下新建一个【links】目录,然后在里面创建【.link】扩展名的文件,在里面写上类似于【path=F:\\IDE\\eclipsePlugin\\maven2】这样的...

    Maven2资源和配置下载

    本篇文章将深入探讨"Maven2资源和配置下载"的主题,以及如何在MyEclipse环境中搭建私有仓库(私服)来管理和分发Maven文件。 首先,Maven2是Apache软件基金会开发的一款构建工具,它通过XML格式的POM(Project ...

    Apache Maven 2 Effective Implementation

    ### Apache Maven 2 有效实施知识点详解 #### 一、Apache Maven 2 概述 Apache Maven 是一个项目管理和理解工具。它包含了构建过程(build process)、软件项目信息和最佳实践指南。Maven 的主要目标是让构建过程...

    maven2之m2eclipse使用手册

    maven2之m2eclipse使用手册.doc

    maven2maven3eclipse通用版本插件

    支持maven2 maven3 通用版本eclipse插件,在maven官网下载apache-maven-3.2.1-bin.zip,解压插件压缩包到path=D:\m2e-0.12.0.20101115-1102 在eclipse新建links文件夹,新建文件maven23.link,内容为:path=D:/m2e-...

    maven2 (maven2的免安装程序,非插件)

    Maven2 是一个强大的项目管理和构建工具,它主要应用于Java开发领域,尤其在Web开发中扮演着重要角色。Maven通过自动化构建过程,包括编译、测试、打包、部署等步骤,大大简化了项目的管理工作。与Eclipse中的Maven...

    maven2 eclipse

    标题 "maven2 eclipse" 暗示了我们要讨论的是如何在 Eclipse 集成管理 Maven 项目。这篇博文可能是关于如何将 Maven 2.x 集成到 Eclipse 开发环境中,以便更有效地构建和管理Java项目。Maven 是一个项目管理和综合...

    maven2-xdoclet2-plugin-2.0.5.jar

    maven2-xdoclet2-plugin-2.0.5.jar

    maven2的学习记录.docx

    Maven2 基础知识点总结 Maven2 是一个基于 Java 的项目管理和构建工具,提供了一个灵活的方式来管理项目的构建、报告和文档。下面是 Maven2 的一些基础知识点总结。 一、Maven2 项目结构 Maven2 项目结构主要分为...

    maven2 jar包

    maven2 jar包 maven2 jar包 maven2 jar包 maven2 jar包 maven2 jar包 maven2 jar包 maven2 jar包 maven2 jar包 maven2 jar包 maven2 jar包 maven2 jar包 maven2 jar包

    maven2教程和源码

    ** Maven2 概述 ** Maven 是一个项目管理和综合工具,主要应用于Java开发环境。Maven2 是 Maven 的一个版本,它简化了构建过程,通过自动化构建生命周期和依赖管理来帮助开发者。Maven 使用一个统一的项目对象模型...

    Maven2_资料分享

    包含:Maven2_基础教程.pdf\《Maven权威指南》-电子书下载(PDF)(中文)\maven2完全使用手册.docx\Maven3实战笔记04Maven的生命周期和插件.doc\Maven实战.pdf\Maven学习指南.pdf

    Eclipse的Maven2插件.zip

    官网公布的 Eclipse 的 Maven2 插件,本插件版本是:m2e-0.12.0.20101115-1102,大小 11 MB。 关于安装 Maven2 插件到 Eclipse 的详细步骤,请参考博客《集成 Maven 2 插件到 eclipse 的过程》,博客地址:...

    Better builds with Maven2源代码

    《构建优化:深入理解Maven2源代码》 在软件开发过程中,构建工具扮演着至关重要的角色,它们负责管理依赖、编译代码、打包应用以及执行测试等任务。Maven2,作为Java领域广泛使用的自动化构建工具,因其强大的功能...

    Maven 2 使用手册

    Maven 2 使用手册,chm中文格式。

    Maven2Eclipse

    Maven2Eclipse.解压后,直接把Maven文件夹整个复制到:eclipse-jee-helios-SR1-win32\eclipse\dropins下就行了。如果没有这个文件夹,你的Eclipse版本太低了,用老方法,link那种方式去折腾吧。

    maven2-xdoclet2-plugin-2.0.6.jar

    maven2-xdoclet2-plugin-2.0.6.jar

    Maven2教程入门基础

    Maven2教程,项目构建使用,一起学习

Global site tag (gtag.js) - Google Analytics