第三章:Maven使用入门
1.Maven项目的核心是pom.xml。POM(Project Object Model,项目对象模型)定义了项目的基本信息,用于描述项目如何构建、声明项目依赖、等等。
2.
<project>
<modelVersion>4.0</modelVersion>
<groupId>com.fancy.mvnbook</groupId>
<artifactId>hello-world</artifactId>
<version>1.0-SNAPSHOT</version>
<name>Maven Hello World Project</name>
</project>
根元素的第一个子元素modelVersion定义了当前POM模型的版本,对于maven2及maven3来说,它只能是4.0.0.
这段代码中最重要的是包含groupId,artifactId和version的三行。这三行元素定义了一个项目基本的坐标,在maven的世界,任何jar,war或者pom都是基于这些基本的坐标进行区分的。
groupId定义了项目属于哪个组,这个组往往和项目所在的组织或者公司存在关联。
artifactId定义了当前maven项目在组中唯一的ID。
3.没有任何实际的java代码,我们就能够定义一个maven项目的POM,这体现了maven的一大优点,它能让项目对象模型最大程度与实际代码相独立,我们可以称之为解耦,或者正交性。
4.下面代码中有一个值为test的元素scope,scope为依赖范围,若依赖范围为test则表示该依赖只对测试有效。如果不声明依赖范围,那么默认为值就是compile,表示对主代码和测试代码都有效。
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.7</version>
<scope>test</scope>
</dependency>
5.maven最主要的命令mvn clean compile:是清理target的内容并编译,mvn clean test:是执行测试,mvn clean package:是打包,mvn clean install:是将项目输出的jar安装到maven的本地仓库中。
6.为了生成可执行的jar文件,需要借助maven-shade-plugin,配置该插件如下:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>1.2.1</version>
<executions>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransFormer">
<mainClass>com.juvenxu.mvnbook.helloworld.HelloWorld</mainClass>
</transformer>
</transformers>
</configuration>
</executions>
</plugin>
6.使用Archetype生成项目骨架:如果是maven3,简单地运行mvn archetype:generate。如果是maven2,最好运行命令mvn org.apache.maven.plugin.plugins:maven-archetype-plugin:2.0-alpha-5:generate。