学习一个新的东西,最快的方式就是实践。所以我们也不用多说什么了,直接拿一个项目来练手。下面的整理取自maven权威指南,在一堆maven资料中,我觉得这本书写的最好。

  • 简介

我们介绍一个用Maven Archetype插件从空白开始创建的简单项目。 当你跟着这个简单项目的开发过程,你会看到这个简单的应用给我们提供了介绍Maven核心概念的机会。

在你能开始使用Maven做复杂的,多模块的构建之前,我们需要从基础开始。如果你之前用过Maven,你将会注意到这里很好的照顾到了细节。你的构建倾向于“只要能工作”,只有当你需要编写插件来自定义默认行为的时候,才需要深入Maven的细节。另一方面,当你需要深入Maven细节的时候,对Maven核心概念的彻底理解是至关重要的。本章致力于为你介绍一个尽可能简单的Maven项目,然后介绍一些使Maven 成为一个可靠的构建平台的核心概念。看过这个例子之后,你将会对构建生命周期
(build lifecycle),Maven仓库 (repositories),依赖管理 (dependency management)和项目 对象模型 (Project Object Model)有一个基本的理解。



  • 1,创建一个简单的项目

在这里我使用eclipse来生成一个项目,然后修改POM的文件的默认依赖,然后修改项目的目录文件,形成一个新的项目。OK,下面是该项目的项目结构,这里也贴出POM文件。

<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> <groupId>org.linkinpark.maven</groupId>
<artifactId>linkinMaven</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging> <name>linkinMaven</name>
<url>http://maven.apache.org</url> <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties> <dependencies> <dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency> <dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-junit</artifactId>
<version>2.0.0.0</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>

  • 2,构建一个简单的项目
这里我们暂时写2个简单的Java文件,一个是源文件,一个是测试文件,下面是代码。
package org.linkinpark.maven.linkinMaven;

public class HelloLinkin
{ public static void main(String[] args)
{
System.out.println("hello,LinkinPark。。。");
} }
package org.linkinpark.maven.linkinMaven;

import org.junit.Assert;
import org.junit.Test; public class HelloTest
{ @Test
public void test()
{
Assert.assertEquals("字符串的结果应该是LinkinPark", "LinkinPark", "LinkinPark");
} }
写完代码之后我们在POM文件上右键然后run as maven install,控制台输出如下:

[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building linkinMaven 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ linkinMaven ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 0 resource
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ linkinMaven ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ linkinMaven ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 0 resource
[INFO]
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ linkinMaven ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ linkinMaven ---
[INFO] Surefire report directory: /Users/LinkinPark/WorkSpace/linkinMaven/target/surefire-reports -------------------------------------------------------
T E S T S
-------------------------------------------------------
Running org.linkinpark.maven.linkinMaven.HelloTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.052 sec Results : Tests run: 1, Failures: 0, Errors: 0, Skipped: 0 [INFO]
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ linkinMaven ---
[INFO]
[INFO] --- maven-install-plugin:2.4:install (default-install) @ linkinMaven ---
[INFO] Installing /Users/LinkinPark/WorkSpace/linkinMaven/target/linkinMaven-0.0.1-SNAPSHOT.jar to /Users/LinkinPark/repository/org/linkinpark/maven/linkinMaven/0.0.1-SNAPSHOT/linkinMaven-0.0.1-SNAPSHOT.jar
[INFO] Installing /Users/LinkinPark/WorkSpace/linkinMaven/pom.xml to /Users/LinkinPark/repository/org/linkinpark/maven/linkinMaven/0.0.1-SNAPSHOT/linkinMaven-0.0.1-SNAPSHOT.pom
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.493 s
[INFO] Finished at: 2016-02-17T00:21:24+08:00
[INFO] Final Memory: 10M/309M
[INFO] ------------------------------------------------------------------------

最后的结果build success,OK,没有问题。注意的是上面的测试tests命令之后的install,控制台明确的告诉了maven默认将我们编译过后生成的这个jar包放到了什么位置上面。

我们切到maven给我们安装的jar所在文件夹下,使用Java -cp命令来执行jar包看下效果:

  • 3,POM文件的说明

在前面第一点上我已经贴出了POM文件。这个pom.xml文件是你将会面对的Maven项目中最基础的POM,一般来说一个POM文件会复杂得多:定义多个依赖,自定义插件行为。最开始的几个元素——groupId,artifactId, packaging, version——是Maven的坐标(coordinates),它们唯一标识了一个项目。name和url是POM提供的描述性元素,它们给人提供了可阅读的名字,将一个项目关联到了项目web站点。最后,dependencies元素定义了一个单独的,测试范围(test-scoped)依赖,依赖于称为JUnit的单元测试框架。关于POM,记住最重要的一句话,pom.xml是一个让Maven跑起来的文件。

当Maven运行的时候,它是根据项目的pom.xml里设置的组合来运行的,一个最上级的POM定义了Maven的安装目录,在这个目录中全局的默认值被定义了,(可能)还有一些用户定义的设置。想要看这个“有效的 (effective)”POM,或者说Maven真正运行根据的POM,在simple项目的基础目录下跑下面的命令,

mvn help:effective-pom

一旦你运行了此命令,你应该能看到一个大得多的POM,它暴露了Maven的默认设置。这里我贴出一份有效的pom文件,也就是默认的那个pom文件。

ffective POMs, after inheritance, interpolation, and profiles are applied:

<!-- ====================================================================== -->
<!-- -->
<!-- Generated by Maven Help Plugin on 2016-02-16T06:14:54 -->
<!-- See: http://maven.apache.org/plugins/maven-help-plugin/ -->
<!-- -->
<!-- ====================================================================== --> <!-- ====================================================================== -->
<!-- -->
<!-- Effective POM for project -->
<!-- 'org.linkinpark.maven:linkinMaven:jar:0.0.1-SNAPSHOT' -->
<!-- -->
<!-- ====================================================================== --> <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>
<groupId>org.linkinpark.maven</groupId>
<artifactId>linkinMaven</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>linkinMaven</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-junit</artifactId>
<version>2.0.0.0</version>
<scope>test</scope>
</dependency>
</dependencies>
<repositories>
<repository>
<snapshots>
<enabled>false</enabled>
</snapshots>
<id>central</id>
<name>Central Repository</name>
<url>https://repo.maven.apache.org/maven2</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<releases>
<updatePolicy>never</updatePolicy>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
<id>central</id>
<name>Central Repository</name>
<url>https://repo.maven.apache.org/maven2</url>
</pluginRepository>
</pluginRepositories>
<build>
<sourceDirectory>/Users/LinkinPark/WorkSpace/linkinMaven/src/main/java</sourceDirectory>
<scriptSourceDirectory>/Users/LinkinPark/WorkSpace/linkinMaven/src/main/scripts</scriptSourceDirectory>
<testSourceDirectory>/Users/LinkinPark/WorkSpace/linkinMaven/src/test/java</testSourceDirectory>
<outputDirectory>/Users/LinkinPark/WorkSpace/linkinMaven/target/classes</outputDirectory>
<testOutputDirectory>/Users/LinkinPark/WorkSpace/linkinMaven/target/test-classes</testOutputDirectory>
<resources>
<resource>
<directory>/Users/LinkinPark/WorkSpace/linkinMaven/src/main/resources</directory>
</resource>
</resources>
<testResources>
<testResource>
<directory>/Users/LinkinPark/WorkSpace/linkinMaven/src/test/resources</directory>
</testResource>
</testResources>
<directory>/Users/LinkinPark/WorkSpace/linkinMaven/target</directory>
<finalName>linkinMaven-0.0.1-SNAPSHOT</finalName>
<pluginManagement>
<plugins>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.3</version>
</plugin>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.2-beta-5</version>
</plugin>
<plugin>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.8</version>
</plugin>
<plugin>
<artifactId>maven-release-plugin</artifactId>
<version>2.3.2</version>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>2.5</version>
<executions>
<execution>
<id>default-clean</id>
<phase>clean</phase>
<goals>
<goal>clean</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>2.6</version>
<executions>
<execution>
<id>default-testResources</id>
<phase>process-test-resources</phase>
<goals>
<goal>testResources</goal>
</goals>
</execution>
<execution>
<id>default-resources</id>
<phase>process-resources</phase>
<goals>
<goal>resources</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<executions>
<execution>
<id>default-jar</id>
<phase>package</phase>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<executions>
<execution>
<id>default-compile</id>
<phase>compile</phase>
<goals>
<goal>compile</goal>
</goals>
</execution>
<execution>
<id>default-testCompile</id>
<phase>test-compile</phase>
<goals>
<goal>testCompile</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.12.4</version>
<executions>
<execution>
<id>default-test</id>
<phase>test</phase>
<goals>
<goal>test</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-install-plugin</artifactId>
<version>2.4</version>
<executions>
<execution>
<id>default-install</id>
<phase>install</phase>
<goals>
<goal>install</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.7</version>
<executions>
<execution>
<id>default-deploy</id>
<phase>deploy</phase>
<goals>
<goal>deploy</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-site-plugin</artifactId>
<version>3.3</version>
<executions>
<execution>
<id>default-site</id>
<phase>site</phase>
<goals>
<goal>site</goal>
</goals>
<configuration>
<outputDirectory>/Users/LinkinPark/WorkSpace/linkinMaven/target/site</outputDirectory>
<reportPlugins>
<reportPlugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-project-info-reports-plugin</artifactId>
</reportPlugin>
</reportPlugins>
</configuration>
</execution>
<execution>
<id>default-deploy</id>
<phase>site-deploy</phase>
<goals>
<goal>deploy</goal>
</goals>
<configuration>
<outputDirectory>/Users/LinkinPark/WorkSpace/linkinMaven/target/site</outputDirectory>
<reportPlugins>
<reportPlugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-project-info-reports-plugin</artifactId>
</reportPlugin>
</reportPlugins>
</configuration>
</execution>
</executions>
<configuration>
<outputDirectory>/Users/LinkinPark/WorkSpace/linkinMaven/target/site</outputDirectory>
<reportPlugins>
<reportPlugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-project-info-reports-plugin</artifactId>
</reportPlugin>
</reportPlugins>
</configuration>
</plugin>
</plugins>
</build>
<reporting>
<outputDirectory>/Users/LinkinPark/WorkSpace/linkinMaven/target/site</outputDirectory>
</reporting>
</project>

关于详细的POM文件,我后面会专门整理到的。

第一个简单的maven项目的更多相关文章

  1. 简单的maven项目

    手动建立一个简单的maven项目,不使用eclipse 好吧,第一步:建立一个项目路径,比如在d盘新建一个mavenTest文件夹,在mavenTest文件夹中建立HelloMaven的文件夹,作为项 ...

  2. maven入门(1-3)构建简单的maven项目

    1. 用Maven 命令创建一个简单的Maven项目 在cmd中运行如下命令: mvn archetype:generate -DgroupId=com.mycompany.app -Dartifac ...

  3. myeclipse(2015)中创建简单的Maven项目的步骤(用于生成可执行jar文件)------》myeclipse2015

    利用MyEclipse的引导,可以很方便的创建简单的.用于生成可执行jar文件的Maven项目: 1.New -> Project... 选择 Maven Project, 点击Next > ...

  4. 构建一个简单的Maven项目

    这里用Maven Archetype插件从空白开始创建简单的项目. 熟悉Maven 项目和Maven的核心概念. 关键词:构建生命周期(build lifecycle), Maven仓库(reposi ...

  5. 使用Intellij IDEA搭建一个简单的Maven项目

    IntelliJ IDEA是Java最优秀的开发工具,它功能全面,提示比较智能,开发界面炫酷,新技术支持的比较迅速. 我使用了Eclipse快10年了,IntelliJ IDEA这么好用必须要试一试. ...

  6. 图文介绍MyEclipse (2015) 中创建简单的Maven项目的步骤(用于生成可运行jar文件)

    利用MyEclipse的引导,能够非常方便的创建简单的.用于生成可运行jar文件的Maven项目: (原创文章,转载请注明转自Clement-Xu的博客:http://blog.csdn.net/cl ...

  7. Eclipse+maven 构建第一个简单的springmvc项目

    先给出项目的目录: 在eclipse下使用maven构建第一个springmvc项目步骤如下: 1.创建maven project(此处默认你已了解maven),此处需要注意以下两点 2.创建完毕后会 ...

  8. maven权威指南学习笔记(三)——一个简单的maven项目

    目标: 对构建生命周期 (build  lifecycle),Maven仓库 (repositories),依赖管理 (dependency management)和项目对象模型 (Project O ...

  9. 2. 创建一个简单的Maven项目

    ☞ 创建项目 选定一个目录,如E:\workspace\maven,新建的项目将放在这个目录. 运行CMD,切换到该目录. 执行mvn archetype:generate直到输出"Choo ...

随机推荐

  1. SQLAlchemy基础操作一

    用前安装 pip3 install sqlalchemy ORM ORM就是运用面向对象的知识,将数据库中的每个表对应一个类,将数据库表中的记录对应一个类的对象.将复杂的sql语句转换成类和对象的操作 ...

  2. rtx web 分级管理系统 二次开发

    fineui + ASP.NET+rtx server sdk 修正 rtx管理器 修改用户后分级目录出错问题. 加入 单用户多个部门 添加授权关闭部分采用 rsa加密.

  3. Luogu P1231 教辅的组成

    Luogu P1231 教辅的组成 题目背景 滚粗了的HansBug在收拾旧语文书,然而他发现了什么奇妙的东西. 题目描述 蒟蒻HansBug在一本语文书里面发现了一本答案,然而他却明明记得这书应该还 ...

  4. deeplearning.ai 人工智能行业大师访谈 Pieter Abbeel 听课笔记

    1. Pieter Abbeel小时候想做一个篮球运动员 - -!上学的时候喜欢数学和物理,上大学之后很自然的学工程.Pieter定义工程问题是"解决实际中应用物理和数学的问题". ...

  5. HDU 2546 饭卡(01背包裸题)

    饭卡 Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submiss ...

  6. 了解前端中的SPA

    单页Web应用(single page web application,SPA),就是只有一张Web页面的应用,是加载单个HTML 页面并在用户与应用程序交互时动态更新该页面的Web应用程序. 单页W ...

  7. [国嵌笔记][036][关闭MMU和CACHE]

    关闭MMU和CACHE 1.Cache是一种容量小,但存取速度非常快的存储器,它保存最近用到的存储器中数据的拷贝.按功能分为ICache(指令Cache)和DCache(数据Cache) 2.虚拟地址 ...

  8. 最小生成树之Prim算法

    描述 最近,小Hi很喜欢玩的一款游戏模拟城市开放出了新Mod,在这个Mod中,玩家可以拥有不止一个城市了! 但是,问题也接踵而来--小Hi现在手上拥有N座城市,且已知这N座城市中任意两座城市之间建造道 ...

  9. visual studio 打开微软MVC3示例MvcMusicStore的详细修改方法

    1.官方下载地址:http://mvcmusicstore.codeplex.com/ 2.直接打开项目后,引用中会有三个dll文件报错,分别是System.Web.MVC;System.Web.He ...

  10. GMP大法教你重新做人(从入门到实战)

    一.引言 GMP(The GNU Multiple Precision Arithmetic Library)又叫GNU多精度算术库,是一个提供了很多操作高精度的大整数,浮点数的运算的算术库,几乎没有 ...