maven基本使用方法(命令行)

本篇记录一下maven在命令行的构建方法,后面讲在idea怎么用。
参考 这里 有详细的maven教程。

创建maven项目

最基本的maven项目创建命令如下
mvn archetype:generate -DgroupId={{your_companyName}} -DartifactId={{your_projectName} -DarchetypeArtifactId=maven-archetype-quickstart
在这里插入图片描述
根目录下有一个pom.xml,用来编写maven的配置(如依赖包)

详细创建指令如下:
mvn archetype:create或者mvn archetype:generate 是固定写法,两者几乎无区别。
额外参数如下:
-DgroupId 组织标识(包名)
-DartifactId 项目名称
-DarchetypeArtifactId 指定ArchetypeId,maven-archetype-quickstart,创建一个Java Project;maven-archetype-webapp,创建一个Web Project
-DinteractiveMode 是否使用交互模式

archetype是mvn内置的一个插件,create任务可以创建一个java项目骨架,DgroupId是软件包的名称,DartifactId是项目名,DarchetypeArtifactId是可用的mvn项目骨架,目前可以使用的骨架有:

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
maven-archetype-webapp

每一个骨架都会建相应的目录结构和一些通用文件,最常用的是maven-archetype-quickstartmaven-archetype-webapp骨架。maven-archetype-quickstart骨架是用来创建一个Java Project,而maven-archetype-webapp骨架则是用来创建一个JavaWeb Project。

添加项目依赖

修改pom.xml 文件。例如想增加json解析包,在https://mvnrepository.com 这个网站搜索,然后复制maven配置进去。
https://mvnrepository.com/artifact/org.json/json/20180813

<dependencies>
   <dependency>
     <groupId>junit</groupId>
     <artifactId>junit</artifactId>
     <version>3.8.1</version>
     <scope>test</scope>
   </dependency>
   <dependency>
       <groupId>org.json</groupId>
       <artifactId>json</artifactId>
       <version>20180813</version>
    </dependency>
    .....
</dependencies>    

默认项目的依赖包下载
完后都放在 C:\Users\Administrator.m2\repository 目录下。需要修改依赖包的下载目录的话在 $MAVEN_HOME$\conf\settings.xml 这个文件下修改。

编译项目

mvn compile
会下载依赖包,然后编译项目。默认编译结果在target/classes目录下,结果为.class文件。

打包jar

jar是java的包,可以其他项目应用。
命令: mvn package
在这里插入图片描述
这个命令会先compile项目,生成classes,然后在把class压缩到一起生成一个jar包。

清理

mvn clean
清理target目录的编译文件。

部署

命令: mvn install
过程: 【清理】→【编译】→【测试】→【打包】→ 【安装】
安装过程就是把.jar相关文件复制到本地仓库里。
在这里插入图片描述
在这里插入图片描述

运行

通过java命令可以运行.class文件,也可以运行.jar文件。
需要注意的点:

  • src源码的类有多少个main都无所谓(这与c/c++项目不一样)
  • 通过java命令运行的时候需要指定运行哪一个类
  • jar或class有第三方依赖包的或需要指定依赖包的位置。
    java命令的几个重要参数
    在这里插入图片描述

例如:我现在有2个java文件,编译成jar文件。
App.java如下:(有第三方包)

package com.hhk;

import org.json.JSONObject;

public class App {
    public static void main(String[] args) {
        JSONObject out = new JSONObject();
        out.put("type", "message");
        System.out.println(out.toString());
    }
}

App2.java如下:

package com.hhk;

/**
 * Hello world!
 *
 */
public class App2 {

    public static void main(String[] args) {
        System.out.println("Hello world");
    }
}

pom.xml文件部分如下:

<dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.json</groupId>
        <artifactId>json</artifactId>
        <version>20180813</version>
    </dependency>
  </dependencies>
 </dependencies>

运行命令mvn package 打包jar之后。(打包为testmvn.jar)
先运行App2.java的主函数,命令为(-cp 和 -classpath一致,表示要加载的jar文件或.class)
java -cp testmvn-1.0-SNAPSHOT.jar com.hhk.App2
在这里插入图片描述

App.java依赖json20180813.jar(加载多个.jar)
java -cp "testmvn-1.0-SNAPSHOT.jar;C:\Users\Administrator\.m2\repository\org\json\json\20180813\json-20180813.jar" com.hhk.App
在这里插入图片描述

pom.xml

pom.xml文件的节点元素说明:

<project>       pom文件的顶级节点
<modelVersion>     object model版本,对Maven2和Maven3来说,只能是4.0.0 
<groupId>       项目创建组织的标识符,一般是域名的倒写
<artifactId>   定义了项目在所属组织的标识符下的唯一标识,一个组织下可以有多个项目
<version>        当前项目的版本,SNAPSHOT,表示是快照版本,在开发中
<packaging>      打包的方式,有jar、war、ear等
<name>        项目的名称
<url>          项目的地址
<properties>    属性配置,比如:<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<dependencies>     构建项目依赖的jar
  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值