Maven简单的学习分享

Maven教程

  1. 概念

Maven是一个项目管理工具,可以对java,scala和其他语言的用于构建和项目管理。

Maven的标准目录,使用原则是约定由于配置的原则,请遵守这样的目录结构:

目录

目的

${basedir}

存放pom.xml和所有的子目录

${basedir}/src/main/java

项目的java源代码

${basedir}/src/main/resources

项目的资源,比如说property文件,springmvc.xml

${basedir}/src/test/java

项目的测试类,比如说Junit代码

${basedir}/src/test/resources

测试用的资源

${basedir}/src/main/webapp/WEB-INF

web应用文件目录,web项目的信息,比如存放web.xml、本地图片、jsp视图页面

${basedir}/target

打包输出目录

${basedir}/target/classes

编译输出目录

${basedir}/target/test-classes

测试编译输出目录

Test.java

Maven只会自动运行符合该命名规则的测试类

~/.m2/repository

Maven默认的本地仓库目录位置

特点:

  1. 项目统一的原则。
  2. 任意工程共享。
  3. 依赖管理自动更新。
  4. 可扩展轻松编译java或者脚本语言的插件。

 

 

2.maven的环境配置

第一步需要先安装jdk 之后安装maven 配置与之的路径即可

Mvn -v测试。

 

3.maven的pom

POM 中可以指定以下配置:

  • 项目依赖
  • 插件
  • 执行目标
  • 项目构建 profile
  • 项目版本
  • 项目开发者列表
  • 相关邮件列表信息

案例:

<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/xsd/maven-4.0.0.xsd"> 

<!-- 模型版本 --> 

<modelVersion>4.0.0</modelVersion> 

<!-- 公司或者组织的唯一标志,并且配置时生成的路径也是由此生成, 如com.companyname.project-group,maven会将该项目打成的jar包放本地路径:/com/companyname/project-group -->

 <groupId>com.companyname.project-group</groupId> 

<!-- 项目的唯一ID,一个groupId下面可能多个项目,就是靠artifactId来区分的 --> 

<artifactId>project</artifactId> 

<!-- 版本号 -->

<version>1.0</version> </project>

4.maven仓库

MaMaven 仓库有三种类型:

  • 本地(local)
  • 中央(central)
  • 远程(remote)

当我们执行 Maven 构建命令时,Maven 开始按照以下顺序查找依赖的库:

  • 步骤 1 - 在本地仓库中搜索,如果找不到,执行步骤 2,如果找到了则执行其他操作。
  • 步骤 2 - 在中央仓库中搜索,如果找不到,并且有一个或多个远程仓库已经设置,则执行步骤 4,如果找到了则下载到本地仓库中以备将来引用。
  • 步骤 3 - 如果远程仓库没有被设置,Maven 将简单的停滞处理并抛出错误(无法找到依赖的文件)。
  • 步骤 4 - 在一个或多个远程仓库中搜索依赖的文件,如果找到则下载到本地仓库以备将来引用,否则 Maven 将停止处理并抛出错误(无法找到依赖的文件)。

Maven 仓库默认在国外, 国内使用难免很慢,我们可以更换为阿里云的仓库。

第一步:修改 maven 根目录下的 conf 文件夹中的 setting.xml 文件,在 mirrors 节点上,添加内容如下:

<mirrors> 

<mirror> 

<id>alimaven</id>

 <name>aliyun maven</name>

 <url>http://maven.aliyun.com/nexus/content/groups/public/</url> 

<mirrorOf>central</mirrorOf> 

</mirror> 

</mirrors>

第二步: pom.xml文件里添加:

<repositories>

 <repository> 

<id>alimaven</id> <name>aliyun maven</name> 

<url>http://maven.aliyun.com/nexus/content/groups/public/</url> 

<releases>

 <enabled>true</enabled> 

</releases>

 <snapshots> 

<enabled>false</enabled> 

</snapshots> 

</repository> 

</repositories>

 

5.创建 Web 应用

我们可以使用 maven-archetype-webapp 插件来创建一个简单的 Java web 应用。

打开命令控制台,进入到 C:\MVN 文件夹,然后执行以下的 mvn 命令:

C:\MVN>mvn archetype:generate -DgroupId=com.companyname.automobile -DartifactId=trucks -DarchetypeArtifactId=maven-archetype-webapp  -DinteractiveMode=false

 

6.Maven 使用原型 archetype 插件创建项目。要创建一个简单的 Java 应用,我们将使用 maven-archetype-quickstart 插件。

在下面的例子中,我们将在 C:\MVN 文件夹下创建一个基于 maven 的 java 应用项目。

命令格式如下:

mvn archetype:generate -DgroupId=com.companyname.bank -DartifactId=consumerBanking -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

7.Maven IntelliJ

在 IntelliJ IDEA 里创建一个新的项目

使用新建项目向导来导入一个 Maven 项目。

  • 打开 IntelliJ IDEA。
  • 选择 File Menu > New Project 选项。

选择 import project from existing model 选项。

Maven简单的学习分享

选择 Maven 选项。

Maven简单的学习分享

选择项目路径,即使用 Maven 创建一个项目时的存储路径。 假设我们创建了一个项目 consumerBanking。 通过 Maven 构建 Java 项目 查看如何使用 Maven 创建一个项目。

Maven简单的学习分享

选择要导入的 Maven 项目。

Maven简单的学习分享

输入项目名称,点击 "finish"。

Maven简单的学习分享

 

现在,我们可以在 IntelliJ IDEA 里看到 Maven 项目了。看一下 consumerBanking 项目的 Libraries 和 Test Libraries,你可以发现 IntelliJ IDEA 已经将 Maven 所依赖的都添加到了它的构建路径里了。

Maven简单的学习分享

在 IntelliJ IDEA 里构建一个 Maven 项目

好了,接下来我们来使用 IntelliJ IDEA 的编译功能来构建这个 Maven 项目 。

  • 选中 consumerBanking 项目。
  • 选择 Buid menu > Rebuild Project 选项。

你可以在 IntelliJ IDEA 的终端里看到构建过程输出的log:

4:01:56 PM Compilation completed successfully

在 IntelliJ IDEA 里运行应用程序

  • 选中 consumerBanking 项目。
  • 右键点击 App.java 弹出上下文菜单。
  • 选择 Run App.main() 。

Maven简单的学习分享

你将会在 IntelliJ IDEA 的终端下看到如下运行结果:

"C:\Program Files\Java\jdk1.6.0_21\bin\java"-Didea.launcher.port=7533 "-Didea.launcher.bin.path=

C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 11.1.2\bin"-Dfile.encoding=UTF-8 -classpath "C:\Program Files\Java\jdk1.6.0_21\jre\lib\charsets.jar;

C:\Program Files\Java\jdk1.6.0_21\jre\lib\deploy.jar;

C:\Program Files\Java\jdk1.6.0_21\jre\lib\javaws.jar;

C:\Program Files\Java\jdk1.6.0_21\jre\lib\jce.jar;

C:\Program Files\Java\jdk1.6.0_21\jre\lib\jsse.jar;

C:\Program Files\Java\jdk1.6.0_21\jre\lib\management-agent.jar;

C:\Program Files\Java\jdk1.6.0_21\jre\lib\plugin.jar;

C:\Program Files\Java\jdk1.6.0_21\jre\lib\resources.jar;

C:\Program Files\Java\jdk1.6.0_21\jre\lib\rt.jar;

C:\Program Files\Java\jdk1.6.0_21\jre\lib\ext\dnsns.jar;

C:\Program Files\Java\jdk1.6.0_21\jre\lib\ext\localedata.jar;

C:\Program Files\Java\jdk1.6.0_21\jre\lib\ext\sunjce_provider.jar;

C:\Program Files\Java\jdk1.6.0_21\jre\lib\ext\sunmscapi.jar;

C:\Program Files\Java\jdk1.6.0_21\jre\lib\ext\sunpkcs11.jar

C:\MVN\consumerBanking\target\classes;

C:\Program Files\JetBrains\

IntelliJ IDEA Community Edition 11.1.2\lib\idea_rt.jar" 

com.intellij.rt.execution.application.AppMain com.companyname.bank.AppHello World!Process finished with exit code 0