maven基础学习(二)-简单实例(编译-打包-安装)

来源:互联网 发布:西安软件公寓软件新城 编辑:程序博客网 时间:2024/06/15 02:31
通过对<Maven基础学习(一)>博客的学习,对maven有了一个大概的了解,本篇博客继续介绍......
1.maven的setting.xml文件.
  Maven用户可以选择配置$MAVEN_HOME/conf/settings.xml或者~/.m2/settings.xml.
  前者是全局范围的,整台机器上的所有用户都会直接受到该配置的影响,而后者是用户范围的,只有当前用户才会受到该配置的影响.
  使用用户范围的settings.xml,会避免影响到系统中的其他用户.
  如果你有切实的需求,需要统一系统中所有用户的settings.xml配置,当然应该使用全局范围的settings.xml.
2.maven的使用,下面结合一个小例子,对maven简单实践一下.
  a.创建一个文件夹maven-demo.

  b.在maven-demo目录下创建一个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.0</modelVersion><groupId>com.ilucky.maven</groupId><artifactId>maven-demo</artifactId><version>1.0-SNAPSHOT</version><name>Hello World</name></project>

    maven项目的核心是pom.xml文件,POM(Project Object Model,项目对象模型)定义了项目的基本信息,这些信息用于描述项目如何构建,如何依赖等.

    直接看pom.xml文件,代码的第一行是XML头,指定了该xml文档的版本和编码方式.紧接着是project元素,project是所有pom.xml的根元素.
    它还声明了一些POM相关的命名空间及xsd元素,虽然这些属性不是必须的,但使用这些属性能够让第三方工具(如IDE中的XML编辑器)
    帮助我们快速编辑POM.根元素下的第一个子元素modelVersion,指定了当前POM模型的版本,对于Maven2及Maven3来说,它只能是4.0.0.
    这段代码中最重要的是groupId,artifactId和version.这三个元素定义了一个项目基本的坐标,在Maven的世界,任何的jar、pom或者war
    都是通过坐标进行区分.在pom中没有任何实际的Java代码,这体现了Maven的一大优点,它能让项目对象模型最大程度地与实际代码相独立,
    我们可以称之为解耦,或者正交性,这在很大程度上避免了Java代码和POM代码的相互影响,比如当项目需要升级版本时,只需要修改POM文件
    而不需要更改Java代码.
  c.创建java主代码.
    根据maven的约定,我们应该把项目主代码放到src/main/java/目录下,所以首先创建层级目录src/main/java.

    其次创建com/ilucky/maven层级目录用来存放主代码,最后创建java主代码类HelloWorld.

package com.ilucky.maven;/** * @author IluckySi * @date 20140403 */public class HelloWorld {public static void main(String[] args) {System.out.println("Hello World");}}
  d.通过maven编译项目.

    在cmd窗口切换到maven-demo目录下,执行mvn clean compile命令,发现在maven-demo目录下多了一个target文件,此文件用来存放java编译后的文件.

F:\ilucky\study\maven\maven基础学习(二)-简单实例\maven-demo>mvn clean package[INFO] Scanning for projects...[INFO][INFO] ------------------------------------------------------------------------[INFO] Building Hello World 1.0-SNAPSHOT[INFO] ------------------------------------------------------------------------[INFO][INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ maven-demo ---[INFO] Deleting F:\ilucky\study\maven\maven基础学习(二)-简单实例\maven-demo\target[INFO][INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ maven-demo ---[WARNING] Using platform encoding (GBK actually) to copy filtered resources, i.e. build is platform dependent![INFO] skip non existing resourceDirectory F:\ilucky\study\maven\maven基础学习(二)-简单实例\maven-demo\src\main\resources[INFO][INFO] --- maven-compiler-plugin:2.5.1:compile (default-compile) @ maven-demo ---[WARNING] File encoding has not been set, using platform encoding GBK, i.e. build is platform dependent![INFO] Compiling 1 source file to F:\ilucky\study\maven\maven基础学习(二)-简单实例\maven-demo\target\classes[INFO][INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ maven-demo ---[WARNING] Using platform encoding (GBK actually) to copy filtered resources, i.e. build is platform dependent![INFO] skip non existing resourceDirectory F:\ilucky\study\maven\maven基础学习(二)-简单实例\maven-demo\src\test\resources[INFO][INFO] --- maven-compiler-plugin:2.5.1:testCompile (default-testCompile) @ maven-demo ---[INFO] No sources to compile[INFO][INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ maven-demo ---Downloading: http://repo.maven.apache.org/maven2/org/apache/maven/surefire/surefire-booter/2.12.4/surefire-booter-2.12.4.pomDownloaded: http://repo.maven.apache.org/maven2/org/apache/maven/surefire/surefire-booter/2.12.4/surefire-booter-2.12.4.pom (3 KB at 2.4 KB/sec)Downloading: http://repo.maven.apache.org/maven2/org/apache/maven/surefire/surefire-api/2.12.4/surefire-api-2.12.4.pomDownloaded: http://repo.maven.apache.org/maven2/org/apache/maven/surefire/surefire-api/2.12.4/surefire-api-2.12.4.pom (3 KB at 1.0 KB/sec)Downloading: http://repo.maven.apache.org/maven2/org/apache/maven/surefire/maven-surefire-common/2.12.4/maven-surefire-common-2.12.4.pomDownloaded: http://repo.maven.apache.org/maven2/org/apache/maven/surefire/maven-surefire-common/2.12.4/maven-surefire-common-2.12.4.pom (6 KB at 7.3 KB/sec)Downloading: http://repo.maven.apache.org/maven2/org/apache/maven/plugin-tools/maven-plugin-annotations/3.1/maven-plugin-annotations-3.1.pomDownloaded: http://repo.maven.apache.org/maven2/org/apache/maven/plugin-tools/maven-plugin-annotations/3.1/maven-plugin-annotations-3.1.pom (2 KB at 2.4 KB/sec)Downloading: http://repo.maven.apache.org/maven2/org/apache/maven/plugin-tools/maven-plugin-tools/3.1/maven-plugin-tools-3.1.pomDownloaded: http://repo.maven.apache.org/maven2/org/apache/maven/plugin-tools/maven-plugin-tools/3.1/maven-plugin-tools-3.1.pom (16 KB at 12.1 KB/sec)Downloading: http://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-utils/3.0.8/plexus-utils-3.0.8.pomDownloaded: http://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-utils/3.0.8/plexus-utils-3.0.8.pom (4 KB at 4.6 KB/sec)Downloading: http://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus/3.2/plexus-3.2.pomDownloaded: http://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus/3.2/plexus-3.2.pom (19 KB at 12.7 KB/sec)Downloading: http://repo.maven.apache.org/maven2/org/apache/maven/surefire/surefire-booter/2.12.4/surefire-booter-2.12.4.jarDownloading: http://repo.maven.apache.org/maven2/org/apache/maven/surefire/surefire-api/2.12.4/surefire-api-2.12.4.jarDownloading: http://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-utils/3.0.8/plexus-utils-3.0.8.jarDownloading: http://repo.maven.apache.org/maven2/org/apache/maven/surefire/maven-surefire-common/2.12.4/maven-surefire-common-2.12.4.jarDownloading: http://repo.maven.apache.org/maven2/org/apache/maven/plugin-tools/maven-plugin-annotations/3.1/maven-plugin-annotations-3.1.jarDownloaded: http://repo.maven.apache.org/maven2/org/apache/maven/plugin-tools/maven-plugin-annotations/3.1/maven-plugin-annotations-3.1.jar (14 KB at 10.6 KB/sec)Downloaded: http://repo.maven.apache.org/maven2/org/apache/maven/surefire/surefire-booter/2.12.4/surefire-booter-2.12.4.jar (34 KB at 15.2 KB/sec)Downloaded: http://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-utils/3.0.8/plexus-utils-3.0.8.jar (227 KB at 59.6 KB/sec)Downloaded: http://repo.maven.apache.org/maven2/org/apache/maven/surefire/surefire-api/2.12.4/surefire-api-2.12.4.jar (115 KB at 9.6 KB/sec)Downloaded: http://repo.maven.apache.org/maven2/org/apache/maven/surefire/maven-surefire-common/2.12.4/maven-surefire-common-2.12.4.jar (257 KB at 12.9 KB/sec)[INFO] No tests to run.[INFO][INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ maven-demo ---[INFO] Building jar: F:\ilucky\study\maven\maven基础学习(二)-简单实例\maven-demo\target\maven-demo-1.0-SNAPSHOT.jar[INFO] ------------------------------------------------------------------------[INFO] BUILD SUCCESS[INFO] ------------------------------------------------------------------------[INFO] Total time: 30.745s[INFO] Finished at: Fri Apr 04 22:51:15 CST 2014[INFO] Final Memory: 10M/24M[INFO] ------------------------------------------------------------------------F:\ilucky\study\maven\maven基础学习(二)-简单实例\maven-demo>
    clean告诉Maven清理目录target/,compile告诉Maven编译项目主代码。从输出中我们看到Maven首先执行了clean:clean任务,
    删除target/目录,然后执行compiler:compile任务,将项目主代码编译至target/classes目录.
    到这里我们可以看到Maven在没有任何额外的配置的情况下就执行了项目的清理和编译任务.
  e.通过maven打包.

    在cmd窗口切换到maven-demo目录下,执行mvn clean package指令,这样会在target目录下生成一个jar文件.

F:\ilucky\study\maven\maven基础学习(二)-简单实例\maven-demo>mvn clean package[INFO] Scanning for projects...[INFO][INFO] ------------------------------------------------------------------------[INFO] Building Hello World 1.0-SNAPSHOT[INFO] ------------------------------------------------------------------------[INFO][INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ maven-demo ---[INFO] Deleting F:\ilucky\study\maven\maven基础学习(二)-简单实例\maven-demo\target[INFO][INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ maven-demo ---[WARNING] Using platform encoding (GBK actually) to copy filtered resources, i.e. build is platform dependent![INFO] skip non existing resourceDirectory F:\ilucky\study\maven\maven基础学习(二)-简单实例\maven-demo\src\main\resources[INFO][INFO] --- maven-compiler-plugin:2.5.1:compile (default-compile) @ maven-demo ---[WARNING] File encoding has not been set, using platform encoding GBK, i.e. build is platform dependent![INFO] Compiling 1 source file to F:\ilucky\study\maven\maven基础学习(二)-简单实例\maven-demo\target\classes[INFO][INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ maven-demo ---[WARNING] Using platform encoding (GBK actually) to copy filtered resources, i.e. build is platform dependent![INFO] skip non existing resourceDirectory F:\ilucky\study\maven\maven基础学习(二)-简单实例\maven-demo\src\test\resources[INFO][INFO] --- maven-compiler-plugin:2.5.1:testCompile (default-testCompile) @ maven-demo ---[INFO] No sources to compile[INFO][INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ maven-demo ---Downloading: http://repo.maven.apache.org/maven2/org/apache/maven/surefire/surefire-booter/2.12.4/surefire-booter-2.12.4.pomDownloaded: http://repo.maven.apache.org/maven2/org/apache/maven/surefire/surefire-booter/2.12.4/surefire-booter-2.12.4.pom (3 KB at 2.4 KB/sec)Downloading: http://repo.maven.apache.org/maven2/org/apache/maven/surefire/surefire-api/2.12.4/surefire-api-2.12.4.pomDownloaded: http://repo.maven.apache.org/maven2/org/apache/maven/surefire/surefire-api/2.12.4/surefire-api-2.12.4.pom (3 KB at 1.0 KB/sec)Downloading: http://repo.maven.apache.org/maven2/org/apache/maven/surefire/maven-surefire-common/2.12.4/maven-surefire-common-2.12.4.pomDownloaded: http://repo.maven.apache.org/maven2/org/apache/maven/surefire/maven-surefire-common/2.12.4/maven-surefire-common-2.12.4.pom (6 KB at 7.3 KB/sec)Downloading: http://repo.maven.apache.org/maven2/org/apache/maven/plugin-tools/maven-plugin-annotations/3.1/maven-plugin-annotations-3.1.pomDownloaded: http://repo.maven.apache.org/maven2/org/apache/maven/plugin-tools/maven-plugin-annotations/3.1/maven-plugin-annotations-3.1.pom (2 KB at 2.4 KB/sec)Downloading: http://repo.maven.apache.org/maven2/org/apache/maven/plugin-tools/maven-plugin-tools/3.1/maven-plugin-tools-3.1.pomDownloaded: http://repo.maven.apache.org/maven2/org/apache/maven/plugin-tools/maven-plugin-tools/3.1/maven-plugin-tools-3.1.pom (16 KB at 12.1 KB/sec)Downloading: http://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-utils/3.0.8/plexus-utils-3.0.8.pomDownloaded: http://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-utils/3.0.8/plexus-utils-3.0.8.pom (4 KB at 4.6 KB/sec)Downloading: http://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus/3.2/plexus-3.2.pomDownloaded: http://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus/3.2/plexus-3.2.pom (19 KB at 12.7 KB/sec)Downloading: http://repo.maven.apache.org/maven2/org/apache/maven/surefire/surefire-booter/2.12.4/surefire-booter-2.12.4.jarDownloading: http://repo.maven.apache.org/maven2/org/apache/maven/surefire/surefire-api/2.12.4/surefire-api-2.12.4.jarDownloading: http://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-utils/3.0.8/plexus-utils-3.0.8.jarDownloading: http://repo.maven.apache.org/maven2/org/apache/maven/surefire/maven-surefire-common/2.12.4/maven-surefire-common-2.12.4.jarDownloading: http://repo.maven.apache.org/maven2/org/apache/maven/plugin-tools/maven-plugin-annotations/3.1/maven-plugin-annotations-3.1.jarDownloaded: http://repo.maven.apache.org/maven2/org/apache/maven/plugin-tools/maven-plugin-annotations/3.1/maven-plugin-annotations-3.1.jar (14 KB at 10.6 KB/sec)Downloaded: http://repo.maven.apache.org/maven2/org/apache/maven/surefire/surefire-booter/2.12.4/surefire-booter-2.12.4.jar (34 KB at 15.2 KB/sec)Downloaded: http://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-utils/3.0.8/plexus-utils-3.0.8.jar (227 KB at 59.6 KB/sec)Downloaded: http://repo.maven.apache.org/maven2/org/apache/maven/surefire/surefire-api/2.12.4/surefire-api-2.12.4.jar (115 KB at 9.6 KB/sec)Downloaded: http://repo.maven.apache.org/maven2/org/apache/maven/surefire/maven-surefire-common/2.12.4/maven-surefire-common-2.12.4.jar (257 KB at 12.9 KB/sec)[INFO] No tests to run.[INFO][INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ maven-demo ---[INFO] Building jar: F:\ilucky\study\maven\maven基础学习(二)-简单实例\maven-demo\target\maven-demo-1.0-SNAPSHOT.jar[INFO] ------------------------------------------------------------------------[INFO] BUILD SUCCESS[INFO] ------------------------------------------------------------------------[INFO] Total time: 30.745s[INFO] Finished at: Fri Apr 04 22:51:15 CST 2014[INFO] Final Memory: 10M/24M[INFO] ------------------------------------------------------------------------F:\ilucky\study\maven\maven基础学习(二)-简单实例\maven-demo>
    Maven会在打包之前执行编译、测试等操作.这里我们看到jar:jar任务负责打包,实际上就是jar插件的jar目标将项目主代码打包成一个
    名为maven-demo-1.0-SNAPSHOT.jar的文件,该文件位于target/输出目录中,它是根据pom文件中的配置进行命名的.
    到这里如果有需要的话,可以将这个jar文件拷贝到其他项目的classpath目录下,作为第三方jar包使用.
  f.通过maven将jar包安装到maven本地仓库中供其他maven项目使用.

    在cmd窗口切换到maven-demo目录下,执行mvn clean install,从输出我们看到该任务将项目输出的jar安装到了Maven本地仓库中,

F:\ilucky\study\maven\maven基础学习(二)-简单实例\maven-demo>mvn clean instal[INFO] Scanning for projects...[INFO][INFO] ------------------------------------------------------------------------[INFO] Building Hello World 1.0-SNAPSHOT[INFO] ------------------------------------------------------------------------[INFO] ------------------------------------------------------------------------[INFO] BUILD FAILURE[INFO] ------------------------------------------------------------------------[INFO] Total time: 0.153s[INFO] Finished at: Fri Apr 04 23:03:59 CST 2014[INFO] Final Memory: 4M/15M[INFO] ------------------------------------------------------------------------[ERROR] Unknown lifecycle phase "instal". You must specify a valid lifecycle phase or a goal in the format <plugin-prefix>:<goal> or <plugin-group-id>:<plugin-artifact-id>[:<plugin-version>]:<goal>. Available lifecycle phases are: validate, initialize, generate-sources, process-sources, generate-resources, process-resources, compile, process-classes, generate-test-sources, process-test-sources, generate-test-resources, process-test-resources, test-compile, process-test-classes, test, prepare-package, package, pre-integration-test, integration-test, post-integration-test, verify, install, deploy, pre-clean, clean, post-clean, pre-site, site, post-site, site-deploy. -> [Help 1][ERROR][ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.[ERROR] Re-run Maven using the -X switch to enable full debug logging.[ERROR][ERROR] For more information about the errors and possible solutions, please read the following articles:[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/LifecyclePhaseNotFoundExceptionF:\ilucky\study\maven\maven基础学习(二)-简单实例\maven-demo>mvn clean install[INFO] Scanning for projects...[INFO][INFO] ------------------------------------------------------------------------[INFO] Building Hello World 1.0-SNAPSHOT[INFO] ------------------------------------------------------------------------[INFO][INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ maven-demo ---[INFO] Deleting F:\ilucky\study\maven\maven基础学习(二)-简单实例\maven-demo\target[INFO][INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ maven-demo ---[WARNING] Using platform encoding (GBK actually) to copy filtered resources, i.e. build is platform dependent![INFO] skip non existing resourceDirectory F:\ilucky\study\maven\maven基础学习(二)-简单实例\maven-demo\src\main\resources[INFO][INFO] --- maven-compiler-plugin:2.5.1:compile (default-compile) @ maven-demo ---[WARNING] File encoding has not been set, using platform encoding GBK, i.e. build is platform dependent![INFO] Compiling 1 source file to F:\ilucky\study\maven\maven基础学习(二)-简单实例\maven-demo\target\classes[INFO][INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ maven-demo ---[WARNING] Using platform encoding (GBK actually) to copy filtered resources, i.e. build is platform dependent![INFO] skip non existing resourceDirectory F:\ilucky\study\maven\maven基础学习(二)-简单实例\maven-demo\src\test\resources[INFO][INFO] --- maven-compiler-plugin:2.5.1:testCompile (default-testCompile) @ maven-demo ---[INFO] No sources to compile[INFO][INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ maven-demo ---[INFO] No tests to run.[INFO][INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ maven-demo ---[INFO] Building jar: F:\ilucky\study\maven\maven基础学习(二)-简单实例\maven-demo\target\maven-demo-1.0-SNAPSHOT.jar[INFO][INFO] --- maven-install-plugin:2.4:install (default-install) @ maven-demo ---Downloading: http://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-utils/3.0.5/plexus-utils-3.0.5.pomDownloaded: http://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-utils/3.0.5/plexus-utils-3.0.5.pom (3 KB at 1.7 KB/sec)Downloading: http://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-digest/1.0/plexus-digest-1.0.pomDownloaded: http://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-digest/1.0/plexus-digest-1.0.pom (2 KB at 1.3 KB/sec)Downloading: http://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-components/1.1.7/plexus-components-1.1.7.pomDownloaded: http://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-components/1.1.7/plexus-components-1.1.7.pom(5 KB at 3.7 KB/sec)Downloading: http://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-utils/3.0.5/plexus-utils-3.0.5.jarDownloading: http://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-digest/1.0/plexus-digest-1.0.jarDownloaded: http://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-digest/1.0/plexus-digest-1.0.jar (12 KB at 4.6 KB/sec)Downloaded: http://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-utils/3.0.5/plexus-utils-3.0.5.jar (226 KB at 21.1 KB/sec)[INFO] Installing F:\ilucky\study\maven\maven基础学习(二)-简单实例\maven-demo\target\maven-demo-1.0-SNAPSHOT.jar to C:\Users\Ilucky_Si\.m2\repository\com\ilucky\maven\maven-demo\1.0-SNAPSHOT\maven-demo-1.0-SNAPSHOT.jar[INFO] Installing F:\ilucky\study\maven\maven基础学习(二)-简单实例\maven-demo\pom.xml to C:\Users\Ilucky_Si\.m2\repository\com\ilucky\maven\maven-demo\1.0-SNAPSHOT\maven-demo-1.0-SNAPSHOT.pom[INFO] ------------------------------------------------------------------------[INFO] BUILD SUCCESS[INFO] ------------------------------------------------------------------------[INFO] Total time: 16.101s[INFO] Finished at: Fri Apr 04 23:04:21 CST 2014[INFO] Final Memory: 10M/25M[INFO] ------------------------------------------------------------------------F:\ilucky\study\maven\maven基础学习(二)-简单实例\maven-demo>

    我们可以打开相应的文件夹看到maven-demo项目的pom和jar,我们说将maven-demo的jar包安装到本地仓库之后,其他Maven项目才能引用他.



    总结:通过上面的六步操作,我们对maven构建项目又有了一些了解,maven还有哪些强大的功能呢?我会继续分享......

点击本链接下载相关文档

0 0
原创粉丝点击