1.maven的下载和安装:

  a.maven的下载注意事项:如果你是windows,请选择①号,如果你是linux,请选择②号,下载地址:http://maven.apache.org/download.html;

  b.下载好后就是解压和安装,配置环境变量了,现在以windows安装包为例,介绍安装配置过程:

    b-1.下载好之后打开下载文件所在文件夹,并在某盘根目录(个人习惯,新装软件是要安装到盘根下的,方便找)下创建maven文件夹,将压缩文件解压到该目录下:

    

    b-2.由于本文件是免安装的,所以接下来就直接是配置环境变量了,如果是临时使用,可以通过set指令设置环境变量(set PATH="D:\maven\apache-maven-3.5.3\bin";%PATH%)。如果要长久使用,回到电脑桌面(win7),右键我的电脑->属性->高级->环境变量->新建一个环境变量MAVEN_HOME=D:\maven\apache-maven-3.5.3找到path环境变量,在其末尾添加;%MAVEN_HOME%\bin;保存后点击win+r,输入cmd指令,回车进入命令行,输入echo %PATH%查看环境变量是否配置进去,输入:mvn -v查看输出:(请事先安装好jdk)

    

  b-3.来到maven安装目录的conf文件夹下,复制一份settings.xml到用户目录的.m2文件夹下,该文件夹下此时应该还有一个文件夹repository(中央仓库),复制的目的是当前用户对settings.xml文件的修改不会影响到所有计算机用户:

    

  b-4.回到命令行,输入mvn help:system,maven会下载一些重要的文件到中央仓库里。ok现在可以开始写自己的第一个maven项目了

2.创建maven文件

  a.在桌面上新建一个文件夹,命名为helloworld,在该文件夹下创建一个名为pom.xml的文件,输入如下内容:

 <?xml version="1.0" encoding="UTF-8" ?>
<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/maven-v4_0_0.xsd"> <modelVersion>4.0.</modelVersion> <!-- 公司或者组织的唯一标志,并且配置时生成的路径也是由此生成, 如com.winner.trade,maven会将该项目打成的jar包放本地路径:/com/winner/trade -->
<groupId>com.yichu.mytest</groupId> <!-- 本项目的唯一ID,一个groupId下面可能多个项目,就是靠artifactId来区分的 -->
<artifactId>helloworld</artifactId> <!-- 本项目目前所处的版本号 -->
<version>1.0.-SNAPSHOT</version> <!-- 打包的机制,如pom,jar, maven-plugin, ejb, war, ear, rar, par,默认为jar -->
<packaging>jar</packaging>
<name>hello world programe</name>
<!-- 配置测试单元的依赖包 -->
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.7</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>

  b.依次创建如下目录结构

    b-1.src/main/java:该文件夹是maven的核心代码文件夹,像web项目的dao,service,controller,pojo等文件都默认存放在此处。

    b-2.src/test/java:该文件夹很明显,就是我们的测试文件存放地点了。

    b-3.src/main/resources:主类的默认存放配置文件的路径。

    b-4.src/test/resources:测试类的配置文件存放位置。

    b-5.logs:日志存放路径

  c.当然,目前我们的helloworld程序还用不到这么多文件夹,但是b-1,b-2还是得创建的。创建好之后来到b-1文件夹下,根据pom.xml配置文件申明,创建如下目录结构:com/yichu/mytest,并在此目录下创建自己的java文件。如HelloWorld.java

 package com.yichu.mytest;
public class HelloWorld{
public String getstring(){
return "hello world";
}
public static void main(String args[]){ System.out.println(new HelloWorld().getstring()); } }

  d.回到b-2目录下,创建自己的测试类,如helloworldtest.java

 package com.yichu.mytest;
import static org.junit.Assert.assertEquals;
import org.junit.Test;
public class helloworldtest{
@Test
public void testgetstring(){
HelloWorld hello=new HelloWorld();
String res=hello.getstring();
assertEquals("hello world",res);
} }

  e.到这一步,我们的编码工作就算完了,接下来是编译,运行,安装,打包了。

    e-1.编译:回到命令行,cd到helloworld文件夹下,输入:mvn clean compile进行编译,然后你会看到下载的提示。

    e-2.测试:同目录下输入:mvn clean test,等待下载。

    e-3.打包:考虑到程序主入口如果未申明,使用java -jar ***不能执行的问题,我们需要在pom.xml中加上这么一段,之后在同目录下输入:mvn clean package进行打包

 <build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>1.4</version>
<configuration>
<createDependencyReducedPom>false</createDependencyReducedPom>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<!--主程序入口指点--> <mainClass>com.yichu.mytest.HelloWorld</mainClass>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>

    效果如图:

    e-4.同目录下cd到target目录下,之后输入java -jar helloworld-1.0.0-SNAPSHOT.jar回车,看到效果如图:

    e-5.如果希望其他程序也想使用该helloworld程序,需要一个安装的过程,之后复制该jar包到项目的classpath下,就能使用它。安装命令:mvn clean install.

3.补充:我们称基本的目录结构如(src/main/java,src/test/java)何pom.xml等为项目的骨架。实际上maven为我们提供了专门的生成命令:mvn archetype:generate来生成项目,避免我们一步步去创建文件夹。

mvn从下载安装到纯命令行创建第一个mvn程序(编码,编译,测试,安装,打包)全过程细致分解的更多相关文章

  1. 命令行创建Windows窗体应用程序

    csc:(C Sharp Compiler) 类似于 javac (java Compiler) 命令行的编译工具 位置:C:\Windows\Microsoft.NET\Framework\v4.0 ...

  2. visual studio code 命令行创建发布一个项目

    安装vs core 打开按ctrl+~键打开终端 输入dir看看有什么文件,输入md Test 创建一个文件夹,选择文件后创建一个项目 输入dotnet可以查看信息 执行dotnet --help或者 ...

  3. Maven命令行创建java或javaWeb项目

    Maven命令行创建java或javaWeb项目   1.命令行创建普通java项目 mvn archetype:generate -DgroupId=com.fxust -DartifactId=d ...

  4. maven安装,maven命令行使用

    1 下载maven,解压(无需安装),配置环境变量,命令行mvn -v测试. 2 maven常用命令:https://www.cnblogs.com/wkrbky/p/6352188.html 3 注 ...

  5. brew 安装指定版本命令行工具 tmux 多版本实现

    Homebrew 是 macOS 命令安装工具,其核心库里的命令行在 github homebrew-core 仓库上维护. 核心库命令大概有 5000 条左右,大部分的命令行工具只保留了最新版本的 ...

  6. 安装Babel(命令行环境,针对Babel6.x版本)

    1.首先安装babel-cli(用于在终端使用babel) npm install -g babel-cli 2.然后安装babel-preset-es2015插件 npm install --sav ...

  7. 无法从命令行或调试器启动服务,必须首先安装Windows服务(使用installutil.exe),然后用ServerExplorer、Windows服务器管理工具或NET START命令启动它

    无法从命令行或调试器启动服务,必须首先安装Windows服务(使用installutil.exe),然后用ServerExplorer.Windows服务器管理工具或NET START命令启动它 1. ...

  8. 命令行下查看python和numpy的版本和安装位置

    命令行下查看python和numpy的版本和安装位置 1.查看python版本 方法一: python -V 注意:‘-V‘中‘V’为大写字母,只有一个‘-’ 方法二: python --versio ...

  9. Angular4.0用命令行创建组件服务出错

    之前使用cnpm创建的angular4.0项目,由于cnpm下载的node_modules资源经常会有部分缺失,所以在用命令行创建模板.服务的时候会报错: Error: ELOOP: too many ...

随机推荐

  1. [NOIP2011提高组day2]-2-聪明的质监员

    2.聪明的质监员(qc.cpp/c/pas) [问题描述] 小 T 是一名质量监督员,最近负责检验一批矿产的质量.这批矿产共有 n 个矿石,从 1到 n 逐一编号,每个矿石都有自己的重量 wi 以及价 ...

  2. 烂笔头——JAVA.String

    人们说 Sting+ 的效率很低 String+的编译步骤是: new StringBuilder() new String.valueof() StringBuilder.<init> ...

  3. Opencv— — mix channels

    // define head function #ifndef PS_ALGORITHM_H_INCLUDED #define PS_ALGORITHM_H_INCLUDED #include < ...

  4. Android Studio 生成APK出现的「前言不允许有内容」错误

    Build-Generate Signed APK的时候发现提示「前言不允许有内容」.发现提示的是Android.mk.xxxjni.c存在问题. 解决方法是,把/main/res中的,包括/jni目 ...

  5. AJAX获取数据,需要添加事件

    如果是通过异步请求从后端获取的数据来渲染页面,要添加事件,必须要在页面已有的元素上,添加时间代理.因为页面渲染需要时间,如果直接绑定在响应时间元素上面,很有可能触发不了事件.

  6. weex 创建项目坑2

    安装成功weex 创建项目 weex create my-project 提示 需要安装 weexpack    Installing 安装失败 后来卸载weex,重新安装weex 执行下面的命令: ...

  7. shell json简单处理

  8. iOS中判断基础字符(大小写、数字等的判断)

    函数:isdigit 用法:#include 功能:判断字符c是否为数字 说明:当c为数字0-9时,返回非零值,否则返回零. 函数:islower 用法:#include 功能:判断字符c是否为小写英 ...

  9. WebBrowser内嵌页面的跨域调用问题

    很早之前我写过一篇Blog:网页通过External接口与WebBrowser交互,文中的交互其实只介绍了JS调用C++的部分,而C++调用JS由于微软自己的例子太多,那篇文章就没介绍,不过我最近遇到 ...

  10. UVa 10723 Cyborg Genes (LCS, DP)

    题意:给定两行字符串,让你找出一个最短的序列,使得这两个字符串是它的子串,并且求出有多少种. 析:这个题和LCS很像,我们就可以利用这个思想,首先是求最短的长度,不就是两个字符串长度之和再减去公共的么 ...