Java Maven pom文件,它在做什么?
我刚刚开始以新手的身份使用Maven,只是想了解一些关于依赖性的知识。 我正在尝试使用iText和pdf输出功能构建一个micro web服务。 因此,我的第一步是看看是否可以从一个非常简单的Java程序中获得pdf输出 在我的pom文件中,我有以下依赖项:Java Maven pom文件,它在做什么?,java,maven,Java,Maven,我刚刚开始以新手的身份使用Maven,只是想了解一些关于依赖性的知识。 我正在尝试使用iText和pdf输出功能构建一个micro web服务。 因此,我的第一步是看看是否可以从一个非常简单的Java程序中获得pdf输出 在我的pom文件中,我有以下依赖项: <!-- iText Core --> <dependency> <groupId>com.itextpdf</groupId> <artifactId>itext
<!-- iText Core -->
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itext7-core</artifactId>
<version>${itext.version}</version>
<type>pom</type>
</dependency>
<!-- iText pdfHTML add-on -->
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>html2pdf</artifactId>
<version>2.1.6</version>
</dependency>
com.itextpdf
itext7核
${itext.version}
聚甲醛
com.itextpdf
html2pdf
2.1.6
在阅读了Maven站点上的信息之后,pom文件应该完成获取依赖项的所有繁重工作,这是我有点困惑的地方。
pom文件是否会在应用程序启动时将文件物理下载到应用程序位置,以便应用程序可以利用这些文件
如果是这种情况,它似乎没有这样做,那么我是否在pom文件中遗漏了一些可以启用此功能的内容 完整的pom文件是:
<?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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.mycompany.app</groupId>
<artifactId>my-app</artifactId>
<version>1.0-SNAPSHOT</version>
<name>my-app</name>
<!-- FIXME change it to the project's website -->
<url>http://www.example.com</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
<itext.version>RELEASE</itext.version>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<!-- iText Core -->
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itext7-core</artifactId>
<version>${itext.version}</version>
<type>pom</type>
</dependency>
<!-- iText pdfHTML add-on -->
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>html2pdf</artifactId>
<version>2.1.6</version>
</dependency>
</dependencies>
<build>
<pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
<plugins>
<!-- clean lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#clean_Lifecycle -->
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>3.1.0</version>
</plugin>
<!-- default lifecycle, jar packaging: see https://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging -->
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.2</version>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.1</version>
</plugin>
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<version>3.0.2</version>
</plugin>
<plugin>
<artifactId>maven-install-plugin</artifactId>
<version>2.5.2</version>
</plugin>
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.2</version>
</plugin>
<!-- site lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#site_Lifecycle -->
<plugin>
<artifactId>maven-site-plugin</artifactId>
<version>3.7.1</version>
</plugin>
<plugin>
<artifactId>maven-project-info-reports-plugin</artifactId>
<version>3.0.0</version>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>
4.0.0
com.mycompany.app
我的应用程序
1.0-快照
我的应用程序
http://www.example.com
UTF-8
1.7
1.7
释放
朱尼特
朱尼特
4.11
测试
com.itextpdf
itext7核
${itext.version}
聚甲醛
com.itextpdf
html2pdf
2.1.6
maven清洁插件
3.1.0
maven资源插件
3.0.2
maven编译器插件
3.8.0
maven surefire插件
2.22.1
maven jar插件
3.0.2
maven安装插件
2.5.2
maven部署插件
2.8.2
maven站点插件
3.7.1
maven项目信息报告插件
3.0.0
谢谢你的帮助。
谢谢执行maven build时,maven会自动将所有依赖项jar下载到本地存储库中 Maven的本地存储库是开发人员机器上的一个文件夹位置,所有项目工件都存储在本地 通常该文件夹名为.m2 此处是此文件夹的默认路径–基于操作系统: Windows:C:\Users\User\u Name\.m2 Linux:/home/User\u Name/.m2 Mac:/Users/user\u name/.m2
Maven将依赖项下载到本地m2存储库。但这更多是为了构建应用程序,而不是为了运行 您想要的(复制输出jar旁边的依赖项)可以通过目标依赖项来实现:复制依赖项 请参阅此博客帖子:
管理依赖关系是Maven的关键功能之一 依赖关系管理:可以定义对其他对象的依赖关系 项目。在构建过程中,Maven构建系统解析 如果需要,它还构建依赖项目 解析依赖项并不意味着它将下载本地系统中所有指定的JAR Maven工具读取pom文件并解析 这个项目。Maven验证所需的组件是否在 本地存储库。本地存储库位于.m2/repository中 用户主目录的文件夹 请注意,.m2/是一个隐藏文件夹。如果您使用的是Linux,那么路径应该是/home/someuser/.m2
然而,如果它根本没有下载JAR或创建.m2目录,那么要么你没有正确地构建项目,要么你没有连接到互联网。“它似乎没有这样做”是非常模糊的。你到底做了什么?你犯了什么错误?POM什么也没做;这是一个描述(“模型”)。Maven Reactor通常通过命令行中的
mvn
来完成这些工作。谢谢Daniel,所以当我在Maven中为项目运行package命令时,依赖项文件是否会打包到jar文件中?@jeeperscropers当您运行mvn安装时,jar将存储在项目的每个版本的本地存储库中谢谢您的回答,这对我的理解非常有帮助。