我对POM.xml包含父,依赖和插件这一事实感到困惑。父类指定的某些东西必须再次包含在依赖项中,例如
<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.mycompany.app</groupId>
<artifactId>my-app</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>my-app</name>
<url>http://maven.apache.org</url>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.2.3.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.1.6.RELEASE</version>
</dependency>
</dependencies>
</project>
为什么我必须两次指定依赖项?我该如何使用这三个标签?
答案 0 :(得分:6)
parent
是一个“继承”的POM,它基本上通过覆盖与你当前的POM结合起来。 (您可以使用“mvn help:effective-pom”打印组合结果)。因此,父级中的所有依赖项和插件都将成为您的(以及所有托管依赖项版本,在spring-boot中占多数)。
dependendency
指定类路径上用于编译或测试或运行项目的工件(取决于其范围)。
而plugin
是一个在构建时执行的工件(如编译器,报告生成器和东西)。
我建议阅读一本关于maven的好教程或书籍,我的简单解释不足以充分利用它。 https://maven.apache.org/articles.html