- 新建一个maven项目
执行mven package
ormvn install
ormvn clean
需要在pom.xml 所在的文件夹下执行。
如下所示:
否则报错如下:
父项目pom文件要加上,<packaging>pom</packaging>
否则子项目建不了。
<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>com.study.maven</groupId>
<artifactId>mavenStudy</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<modules>
<module>sonOfMaven</module>
</modules>
</project>
父项目pom文件要加上,<packaging>pom</packaging>
why?
项目的打包类型:pom、jar、war。
一般使用maven进行模块管理,每个模块下对应都有一个pom文件,pom文件维护了各个模块之间的依赖和继承关系
Packaging的含义
任何一个Maven项目都需要定义POM元素packaging(如果不写则默认值为jar)。顾名思义,该元素决定了项目的打包方式。实际的情形中,如果你不声明该元素,Maven会帮你生成一个JAR包;如果你定义该元素的值为war,那你会得到一个WAR包;如果定义其值为POM(比如是一个父模块),那什么包都不会生成。
除此之外,Maven默认还支持一些其他的流行打包格式,例如ejb3和ear。你不需要了解具体的打包细节,你所需要做的就是告诉Maven,”我是个什么类型的项目“,这就是约定优于配置的力量。
为了更好的理解Maven的默认打包方式,我们不妨来看看简单的声明背后发生了什么,对一个jar项目执行mvn package操作,会看到如下的输出:
[INFO] — maven-jar-plugin:2.3.1:jar (default-jar) @ git-demo —
[INFO] Building jar: /home/juven/git_juven/git-demo/target/git-demo-1.2-SNAPSHOT.jar
相比之下,对一个war项目执行mvn package操作,输出是这样的:
[INFO] — maven-war-plugin:2.1:war (default-war) @ webapp-demo —
[INFO] Packaging webapp
[INFO] Assembling webapp [webapp-demo] in [/home/juven/git_juven/webapp-demo/target/webapp-demo-1.0-SNAPSHOT]
[INFO] Processing war project
[INFO] Copying webapp resources [/home/juven/git_juven/webapp-demo/src/main/webapp]
[INFO] Webapp assembled in [90 msecs]
[INFO] Building war: /home/juven/git_juven/webapp-demo/target/webapp-demo-1.0-SNAPSHOT.war
maven pom.xml文件解析:
maven-resources-plugin
插件负责处理项目资源文件并拷贝到输出目录
maven-source-plugin
对于Maven工程的源代码进行源文件的打包
maven-compiler-plugin
java编译插件,告诉maven在编译Java文件时使用什么版本的jre