Maven简单的学习分享
Maven教程
- 概念
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默认的本地仓库目录位置 |
特点:
- 项目统一的原则。
- 任意工程共享。
- 依赖管理自动更新。
- 可扩展轻松编译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 创建一个项目时的存储路径。 假设我们创建了一个项目 consumerBanking。 通过 Maven 构建 Java 项目 查看如何使用 Maven 创建一个项目。
选择要导入的 Maven 项目。
输入项目名称,点击 "finish"。
现在,我们可以在 IntelliJ IDEA 里看到 Maven 项目了。看一下 consumerBanking 项目的 Libraries 和 Test Libraries,你可以发现 IntelliJ IDEA 已经将 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() 。
你将会在 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