编译项目时,Maven 将从存储库下载相应的 .jar 文件,通常是中央存储库(您可以配置不同的存储库,用于镜像或中央存储库上不可用的您自己的库)。
如果您的 IDE 知道 Maven,它将解析pom
并自行下载依赖项或要求 Maven 这样做。然后它将打开依赖项的 jar,这就是您获得自动完成的方式:IDE 在幕后为您“导入”这些 jar。
存储库不仅包含依赖项的“.jar”文件,还包含一个描述其依赖项的“.pom”文件。因此,maven 将递归下载其依赖项,您将获得编译软件所需的所有 jar。
然后,当您尝试运行您的软件时,您必须告诉 JVM 在哪里可以找到这些依赖项(即,您必须将它们放在类路径中)。
我通常做的是将依赖项复制到一个target/lib/
目录中,这样就很容易部署和启动软件。为此,您可以使用在maven-dependency-plugin
中指定的<build>
:
<build>
<plugin>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.1</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/lib</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
</build>