zoukankan      html  css  js  c++  java
  • maven学习一(HelloWorld工程)

    maven是一个出色的java工程依赖管理的工具,刚刚开始学习用maven建立一个HelloWorld工程。

    maven安装

    $ wget http://mirrors.cnnic.cn/apache/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz
    $ tar -zxvf apache-maven-3.3.9-bin.tar.gz
    $ sudo mv apache-maven-3.3.9 /usr/local/maven
    $ export PATH=$PATH:/usr/local/maven/bin
    $ mvn -version
    

    配置maven源

    maven和Linux下的yum是很像的,在解析依赖的时候会去配置的源里搜索包,然后下载下来保存到本地仓库,下次其它工程解析到同一个包依赖时就会从本地仓库里取。maven的配置文件默认是在

    $INSTALL_DIR/conf/settings.xml
    

    conf/settings.xml是maven的全局配置,每个用户还可以配置自定义的settings.xml,路径是

    ~/.m2/settings.xml
    

    settings.xml具体每项配置的含义可以查看:maven配置文件settings.xml。其中有一项配置是

    localRepository就是本地仓库路径,jar包都会下载到这个目录下
    <localRepository>${user.home}/.m2/repository</localRepository>
    

    另外,国内使用maven可以用oschina的源:http://maven.oschina.net/static/xml/settings.xml

    新建HelloWorld工程

    maven有几个概念

    groupId: 项目的组织机构,也是java包的目录结构,一般都是域名的倒序,比如 com.firefoxbug.www
    artifactId: 项目实际的名字,比如log4j
    packaging: 包的类型,比如jar
    version: 项目版本号,比如1.0-SNAPSHOT
    

    再引入maven坐标的概念

    ${groupId}:${artifactId}:${packaging}:${version} 
    

    通过maven坐标可以唯一确定一个项目,比如 com.firefoxbug.www:HelloWorld:jar:1.0-SNAPSHOT。

    下面开始建立一个HelloWorld的maven工程

    $ groupId=com.firefoxbug.www
    $ artifactId=HelloWorld
    $ version=1.0-SNAPSHOT
    $ mvn archetype:generate -DgroupId=${groupId} -DartifactId=${artifactId} -Dpackage=${groupId} -Dversion=${version}
    

    maven会自动建立一些列的目录,结构如下

    HelloWorld/
    ├── pom.xml
    └── src
        ├── main
        │   └── java
        │       └── com
        │           └── firefoxbug
        │               └── www
        │                   └── App.java
        └── test
            └── java
                └── com
                    └── firefoxbug
                        └── www
                            └── AppTest.java
    

    pom.xml

    每个工程都会有pom.xml用来描述这个工程所需要的外部依赖,包括具体版本的jar包,maven自动会去解析pom.xml文件然后下载包到本地仓库,被依赖的包自身也有pom.xml描述文件,maven就会递归解析。pom.xml大概格式如下,后面我们再慢慢分析。

    $ cd helloworld && vim pom.xml
    <project >
      <groupId>com.firefoxbug.helloworld</groupId>
      <artifactId>helloworld</artifactId>
      <version>1.0-SNAPSHOT</version>
      <packaging>jar</packaging>
    
      <name>helloworld</name>
    
      <dependencies>
        <dependency>
        </dependency>
      </dependencies>
    </project>
    

    编译、运行HelloWorld

    maven工具可以支持以下功能

    1. mvn compile 编译源代码
    2. mvn test-compile 编译测试代码
    3. mvn test 运行测试
    5. mvn package 打包,根据pom.xml打成war或jar
        如果pom.xml中设置 war,则此命令相当于mvn war:war
        如果pom.xml中设置 jar,则此命令相当于mvn jar:jar
    6. mvn -Dtest package   
        打包但不编译test例子:mvn package -Dmaven.test.skip=true
        打包、编译但是不运行test例子: mvn package -DskipTests
    7. mvn install  在本地Repository中安装jar
    8. mvn clean    清除产生的项目
    9. mvn eclipse:eclipse 生成eclipse项目
    10.mvn idea:idea    生成idea项目
    11.mvn eclipse:clean    清除eclipse的一些系统设置
    

    package会进行打包,包括编译、测试

    $ mvn package
    

    如果编译没有错误,就会在根目录下产生一个target目录,并且生成相应的jar包,解压出来后就是工程目录

    $ cd target
    $ jar -xvf  HelloWorld-1.0-SNAPSHOT.jar
      created: META-INF/
     inflated: META-INF/MANIFEST.MF
      created: com/
      created: com/firefoxbug/
      created: com/firefoxbug/www/
     inflated: com/firefoxbug/www/App.class
     ...
    

    运行HellWorld

    $ java -cp HelloWorld-1.0-SNAPSHOT.jar com.firefoxbug.www.App
    Hello World!

    from: http://www.firefoxbug.com/index.php/archives/2815/
  • 相关阅读:
    从 React Router 谈谈路由的那些事
    js中var、let、const区别
    关于Redux到底是个什么鬼
    git 中遇到的问题
    Delphi中BCD和Currency类型
    Mscomm控件安装问题 License information for TMSComm not found.
    以前的某个程序已在安装计算机上创建挂起的文件操作,运行安装程序之前必须重新启动计算机
    win7系统安装SQLServer2000的详细步骤(图文)
    Delphi判断字符串中是否包含汉字,并返回汉字位置
    Sql Server中判断表、列不存在则创建的方法[转]
  • 原文地址:https://www.cnblogs.com/GarfieldEr007/p/6995516.html
Copyright © 2011-2022 走看看