`
qtlkw
  • 浏览: 307114 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

(转)mvn工具介绍

 
阅读更多
学习Mina的时候,发现Mina使用Maven做项目管理的。又开始学习Maven,这段时间做的笔记。要学会这种类似于ant,又比ant高级的build工具,首先要掌握mvn命令下的各个参数,然后将这些mvn、参数组合在实际的项目中加以运用。

mvn将项目分为5个阶段(lifecycle):准备、编译(complie)、测试、部署、运行

下载配置maven:


详细过程网上都会有。

1.1 user
对指定用户的配置。user configuration可以在${user.home}/.m2/settings.xml中指定。注:该文件不是必须的,当该文件找不到时,maven会使用默认的配置。

关于该文件的具体配置可以参考:http://maven.apache.org/ref/2.0.4/maven-settings/settings.html

1.2 配置代理
在maven2.0中,代理服务器上网,可以为http request配置代理。同样在user configuration中配置,配置如下:

     <proxy>
      <id>optional</id>
      <active>true</active>
      <protocol>http</protocol>
      <username>proxyuser</username>
      <password>proxypass</password>
      <host>www.hc360.com</host>
      <port>80</port>
      <nonProxyHosts>local.net,some.host.com</nonProxyHosts>
    </proxy>

详见:http://maven.apache.org/guides/mini/guide-proxies.html

1.3 安全和部署配置
在一个project中,该项目将要使用哪个Repository,是在setting.xml中指定的。然而,你却不能将用户名和

码以及其它的安全设定也放在该project中。因此,你可能会在你自己的设定中定义一个server,给它指定一个id, 该id
与project将要使用那个Repository相对应。

另外,有些repository在下载时可能需要用户名和密码,这些也可以在server element中以相同的方式指定。配置如下
    <server>
      <id>deploymentRepo</id>
      <username>repouser</username>
      <password>repopwd</password>
    </server>

1.4 mavenplugins for eclipse
通过eclipse安装的url为http://m2eclipse.sonatype.org/update/ ,可以去官方网站上查询。

配置:在window-->references-->Java-->build path-->classpath variables,按"New",名字为:M2_REPO  创建一个目录,指向当前的资源库:C:/Documents and Settings/pengch/.m2/repository

要注意的部分:设置maven的主目录的名称为:M2_HOME。从服务器下载的jar库默认是: ${user.home}/.m2/repository/下,我的${user.home}值为:C:/Documents and Settings/Administrator,初始配置是在:%M2_HOME%/bin/m2.conf文件中可见到。如果要修改resposity的值:

有两种方法:%M2_HOME%/conf/settings.xml中的字段为:<localRepository>实际的物理地址</localRepository>,如<localRepository>E:/maven/.m2/repository</localRepository>

另一种方法是:用artifactory来建立maven的本地的repository。本人没有试用过。(以下转自:http://www.javaeye.com/topic/98480)

官方的maven repository服务器特别的慢,还记得上次海底电缆事故么?官方的服务器根本就无法访问,那段时间简直要抓狂。并且官方服务器类库版本通常不是最新,有时候想用最新版的还得自己动手。(下面会介绍如何自己动手做),所以建立一个自己的本地代码服务器对于整个团队就特别有意义。

Maven的服务器很简单,一个普通的http服务器就行,比如apache,装好apache以后。

将你本地代码库文件夹拷贝到apache安装目录下htpdocs/maven2,windows用户是C:/Documents and Settings/jeffrey/.m2/repository,linux下是 /home/Jeffrey/.m2/repository(注意.m2在linux下是隐藏文件夹)

启动apache服务器,在浏览器中输入http://localhost/maven2/repository,应该可以查看到repository的文件目录

编辑项目pom,指定本地的代码库服务器

在project中加入:

  

xml 代码

<repositories> 
  <repository> 
    <id>mylibsid> 
    <url>http://localhost/maven2/repositoryurl> 
  repository> 
repositories> 


可以加入多个repository,mvn会按照顺序检索,如果都没有找到,最后会去找官方的服务器。(转完)

maven 常用命令组合:
创建:mvn archetype:create -DgroupId=com.oreilly -DartifactId=app

文件夹结构:

app

---com

------oreilly

创建Maven的普通java项目:mvn archetype:create -DgroupId=com.codeline.commons -DartifactId=pjoName   
创建Maven的Web项目:mvn archetype:create -DgroupId=com.mycompany.app -DartifactId=my-webapp -DarchetypeArtifactId=maven-archetype-webapp  

编译:
cd app;

mvn compile

编译测试用例:Compiling Test Sources and Running Unit Tests

mvn test;

mvn test will always run the compile and test-compile phases first, as well as all the others defined before it.

打包,
Packaging and Installation to Your Local Repository

Making a JAR file is straightforward and can be accomplished by executing the following command:

C:/app> mvn package

将生成的文件添加到本地类库中
Now, you'll want to install the artifact (the JAR file) you've generated into your local repository. It can then be used by other projects as a dependency. The directory <user_home>/.m2/repository isthe default location of the repository.

To install, execute the following command:

C:/app> mvn install

maven代码库的文件目录组织方式,同一个jar对于每个版本都有一个独立的文件夹来存放,除了jar还要有该jar的描述文件.pom,以及他们的校验文件.sh1

.pom文件里定义了该jar的名称、版本以及该jar所依赖到的其他jar(这也就是为什么引入一个jar却带出一大堆的jar来)

最简单的pom如下:

xml 代码

xml version="1.0" encoding="UTF-8"?> 
<project> 
    <modelVersion>4.0.0modelVersion> 
    <groupId>net.jeffreygroupId> 
    <artifactId>xxxartifactId> 
    <version>1.0version> 
    <dependencies> 
    dependencies> 
project> 
         为jar和pom生成校验文件

         可以通过一个ant任务来做:

xml 代码

 
<target name="checksum" description="Generate checksum file for jar and pom"> 
       <checksum algorithm="SHA" fileext=".sha1"> 
           <fileset dir="d:/javalib" id="id">  
              <include name="**/*.pom" /> 
              <include name="**/*.jar" /> 
              <include name="**/*.xml" /> 
              <exclude name="**/*.sh1" /> 
           </fileset> 
       </checksum> 
</target> 


把生成好的sh1文件和jar、pom按照前面介绍的结构布局拷贝到apache的代码库中,当然你也可以直接拷到本地代码库中。

(转自:http://fluagen.blog.51cto.com/146595/40086)

在安装hibernate的架包时告诉我jta无法下载。要求本地化安装,给出的提示如下:
1) javax.transaction:jta:jar:1.0.1B
Try downloading the file manually from:http://java.sun.com/products/jta.Then, install it using the command:
mvn install:install-file -DgroupId=javax.transaction -DartifactId=jta /  -Dversion=1.0.1B -Dpackaging=jar -Dfile=/path/to/filePath to dependency:
1) com.efn:mywebapp:war:1.0-SNAPSHOT
2) org.hibernate:hibernate:jar:3.1rc2
3) javax.transaction:jta:jar:1.0.1B
----------
1 required artifact is missing.for artifact: com.efn:mywebapp-1.0-SNAPSHOT.war这个提示是说可以先到sun的网站下载jta架包,然后采用命令行的方式按要求安装,因为我本来就有此架包,于是拷到一个方便的位置,比如c:/,然后在命令行下输入:
mvn install:install-file -DgroupId=javax.transaction -DartifactId=jta -Dversion=1.0.1B -Dpackaging=jar -Dfile=C:/jta.jar
执行完毕后,一切OK!

(转完)

其他命令:
不需任何附加工作maven依靠此POM就可以为你的项目产生一个网站,你只须定制你的maven网站,如果时间紧迫,你只须执行以下命令:

mvn site


还有许多goals可以执行,比如

mvn clean


此命令删除target目录。

可能你需要为你的项目产生一个IntelliJ IDEA 描述符,执行以下命令:

mvn idea:idea


         

组合使用goal命令,如只打包不测试:mvn -Dtest package   
编译测试的内容:mvn test-compile  
只打jar包: mvn jar:jar  
只测试而不编译,也不测试编译:mvn test -skipping compile -skipping test-compile (这里要特别注意 -skipping 的灵活运用,当然也可以用于其他组合命令)  
清除eclipse的一些系统设置:mvn eclipse:clean

注意事项:
当建立一个工程后,执行 mvn eclipse:eclipse,则会产生eclipse的工程文件,但是第一次用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的数据仓库位置

将资源文件(.resources)加入
如何在jar文件中加入资源?

在示例应用程序中,增加目录${basedir}/src/main/resources,我们把资源文件放入此目录。任何在${basedir}/src/main/resources目录中的文件和目录都将被打包到jar文件中。

my-app

|-- pom.xml

`-- src

    |-- main

    |   |-- java

    |   |   `-- com

    |   |       `-- mycompany

    |   |           `-- app

    |   |               `-- App.java

    |   `-- resources

    |       `-- META-INF

    |           `-- application.properties

    `-- test

        `-- java

            `-- com

                `-- mycompany

                    `-- app

                        `-- AppTest.java


在这个例子中,我们在${basedir}/src/main/resources目录下放了一个META-INF目录并在META-INF目录中放了一个application.properties文件。如果你将jar文件解压,可以看到以下内容:

|-- META-INF

|   |-- MANIFEST.MF

|   |-- application.properties

|   `-- maven

|       `-- com.mycompany.app

|           `-- my-app

|               |-- pom.properties

|               `-- pom.xml

`-- com

    `-- mycompany

        `-- app

            `-- App.class


就像你看到的那样,${basedir}/src /main/resources中的内容在jar文件的起始位置,我们的application.properties文件在META-INF目录下。同 时,一些其他文件如META-INF/MANIFEST.MF,以及pom.xml和pom.properties文件也在其中,对于maven产生的 jar文件来说,这是maven的标准行为。你可以自行创建自己的manifest,不过如果你不指定,maven会产生一个默认的。由于pom.xml 和pom.properties文件都被打包到jar文件中,所以maven产生的产品都是自描述的,一个简单的应用就是获得应用程序版本。打开POM文 件可能需要一些maven的工具,但打开属性文件可以使用标准的java API来做到,属性文件pom.properties如下所示:

#Generated by Maven

#Tue Oct 04 15:43:21 GMT-05:00 2005

version=1.0-SNAPSHOT

groupId=com.mycompany.app

artifactId=my-app


为了单元测试,可能需要把资源加入到classpath,你可以遵照同样的模式:

my-app

|-- pom.xml

`-- src

    |-- main

    |   |-- java

    |   |   `-- com

    |   |       `-- mycompany

    |   |           `-- app

    |   |               `-- App.java

    |   `-- resources

    |       `-- META-INF

    |           |-- application.properties

    `-- test

        |-- java

        |   `-- com

        |       `-- mycompany

        |           `-- app

        |               `-- AppTest.java

        `-- resources

            `-- test.properties


那么在测试代码中,只须使用如下代码就可访问这些资源:

...

// Retrieve resource

InputStream is = getClass().getResourceAsStream( "/test.properties" );

// Do something with the resource

...

建立Maven2的本地代码库服务器,也就是常说的“私服”

官方的maven repository服务器特别的慢,还记得上次海底电缆事故么?官方的服务器根本就无法访问,那段时间简直要抓狂。并且官方服务器类库版本通常不是最新,有时候想用最新版的还得自己动手。(下面会介绍如何自己动手做),所以建立一个自己的本地代码服务器对于整个团队就特别有意义。

Maven的服务器很简单,一个普通的http服务器就行,比如apache,装好apache以后。

将你本地代码库文件夹拷贝到apache安装目录下htpdocs/maven2,windows用户是C:\Documents and Settings\jeffrey\.m2\repository,linux下是 /home/Jeffrey/.m2/repository(注意.m2在linux下是隐藏文件夹)

启动apache服务器,在浏览器中输入http://localhost/maven2/repository,应该可以查看到repository的文件目录

编辑项目pom,指定本地的代码库服务器

在project中加入:
  
xml 代码


    <repositories> 
      <repository> 
        <id>mylibs<!---->id> 
        <url>http://localhost/maven2/repository<!---->url> 
      <!---->repository> 
    <!---->repositories> 


<o:p></o:p>

可以加入多个repository,mvn会按照顺序检索,如果都没有找到,最后会去找官方的服务器
分享到:
评论

相关推荐

    mvn 常用命令手册mvn开发必备

    ### MVN常用命令详解 Maven 是一个项目管理和理解工具,它包含了一个项目对象模型 (POM),一组标准集合,一个项目生命周期,一个依赖管理机制,用于运行构建任务的插件集合,以及用来扩展现有功能的插件机制。在...

    mvn常用命令行

    Maven 是一个强大的构建工具,广泛应用于 Java Web 开发中,它可以帮助开发者管理项目依赖、构建、测试和部署。在 Java 开发过程中,熟练掌握 Maven 命令行操作能够极大地提升开发效率。以下是一些 Maven 常用的...

    Mvn常用命令总结

    本文将详细介绍Maven中常用的命令及其应用场景。 #### 1. 显示Maven版本信息:`mvn -v` 该命令用于查看当前系统上安装的Maven版本以及Java版本等基本信息。这对于排查构建过程中出现的问题十分有用。 #### 2. ...

    mvn release 配置说明

    `mvn release`是Maven项目管理工具中的一个插件,用于执行软件版本的发布流程。这个流程通常包括准备发布的新版本,创建源码和二进制的归档,然后在版本控制系统中提交这些更改。在本文中,我们将深入探讨`mvn ...

    eclipse 导出 mvn jar 工具

    本篇文章将详细介绍如何通过编写批处理脚本(bat文件)在Eclipse中导出Maven项目生成的JAR文件。 首先,让我们理解Maven的基本概念。Maven是一个自动化构建工具,它使用XML格式的POM(Project Object Model)文件来...

    mvn配置命令文档

    Maven是Apache软件基金会组织下的一个开源项目,它是一个项目管理和理解工具。Maven通过一个中心信息来管理项目的构建、报告和文档,大大简化了Java项目的构建过程。在本篇文章中,我们将深入探讨Maven的环境配置...

    java+mvn爬虫

    Maven 是一个强大的项目管理和依赖管理工具,使得Java项目的构建、编译和依赖管理变得更加简单。本项目“java+mvn爬虫”结合了这两者,提供了一个简洁易懂的爬虫示例,适用于初学者进行学习和实践。 一、Java 爬虫...

    mvn-download

    在Java开发过程中,Maven(MVN)是一个广泛使用的依赖管理工具,它使得开发者能够方便地管理和构建项目。"mvn-download"这个话题是关于如何通过Maven的命令行工具来下载特定的JAR(Java Archive)包。下面将详细解释...

    mvn常用命令

    MVN(Maven)是一款基于项目对象模型(POM)的项目管理工具,它可以帮助开发者管理项目的依赖关系、编译、测试、打包和部署。下面是MVN的常用命令: 创建Maven项目 1. 创建Maven的普通Java项目:`mvn archetype:...

    机器学习mvn实例

    机器学习是一种数据分析技术,它使计算机系统能够从数据中学习并改进...同时,熟悉编程语言(如Python的scikit-learn库)和数据分析工具(如numpy和pandas)也是必要的,因为这些工具经常用于实现和评估机器学习模型。

    Cmd执行mvn clean package 命令使用文档

    3. **mvn**:Maven的命令行工具。它负责解析POM文件中的配置信息,并按照指定的目标执行相应的构建任务。 #### 五、执行过程中的输出说明 执行`mvn clean package`命令后,Maven会输出一系列的信息,其中包括构建...

    Spring mvn学习资料

    标题 "Spring mvn学习资料" 暗示了我们即将探讨的是关于Spring框架与Maven构建工具的相关知识。Spring是一个广泛使用的Java企业级应用开发框架,它提供了丰富的功能,包括依赖注入、AOP(面向切面编程)、数据访问、...

    匹处理mvn命令用法

    本文将深入探讨“匹处理mvn命令用法”,结合提供的标签“源码”和“工具”,我们将主要关注如何使用Maven的命令行工具(CMD)来管理Java项目。 **Maven简介** Maven是由Apache软件基金会开发的一个项目管理和综合...

    mvn+svn+linux打包

    标题中的“mvn+svn+linux打包”涉及的是在Linux环境下使用Maven(mvn)和Subversion(svn)工具进行软件项目的构建和版本控制。这里我们将深入探讨这三个关键概念及其在软件开发过程中的作用。 1. Maven: Maven是...

    使用dos命令实现mvn的自动编译以及test case的运行

    标题 "使用dos命令实现mvn的自动编译以及test case的运行" 描述了如何在DOS命令行环境中利用Maven(mvn)工具进行自动化编译和测试用例的执行。这一主题对于任何Java开发者来说都至关重要,因为它涉及到项目构建自动...

    mvn 配置 yui 自动 打包

    当我们谈论"mvn 配置 yui 自动 打包"时,我们实际上是在讨论如何利用Maven(mvn)这个流行的Java项目管理工具,配合YUI Compressor(yuicompressor)进行资源文件的压缩和优化,以实现项目的自动打包流程。...

    springmvn搭建的Maven项目入门

    Maven则是一个项目管理工具,用于自动化构建、依赖管理和项目信息管理。在IDEA环境下,结合这两者,可以高效地搭建一个SpringMVC项目。 1. **创建Maven项目** - 在IDEA中选择"New Project",然后选择"Maven",填写...

    springmvc+mvn+mybatis+mysql示例源码

    【标题】"springmvc+mvn+mybatis+mysql示例源码"是一个演示如何将Spring MVC、MyBatis和MySQL数据库集成到一起的Java Web项目。这个项目使用Maven作为构建工具,使得依赖管理和项目构建更为规范和高效。下面我们将...

    mvn_resp.rar

    本资料"mvn_resp.rar"聚焦于Maven的响应式编程(Reactive Programming)特性,旨在帮助开发者深入理解并熟练运用这一技术。以下是关于Maven响应式编程的详细讲解。 一、Maven概述 Maven是由Apache软件基金会开发的...

Global site tag (gtag.js) - Google Analytics