繁体   English   中英

我是否正确理解Maven?

[英]Do I understand Maven correctly?

最近,我想尝试Apache Crunch库。 为此,我了解了Maven。

据我了解,为了使用一个库,只需要在项目的pom.xml文件中添加适当的<dependency>..</dependency>块,然后构建该项目。 所有依赖项将由Maven递归下载。

我的问题很简单:我的理解正确吗? 因为在此示例中,我只是将crunch-core依赖项粘贴到pom文件中,并且仅下载了一些依赖项(因此在运行应用程序时得到了ClassNotFoundException ,这是我想要避免的)。

我的问题与Crunch无关。 我正在尝试验证我对如何使用Maven使用第三方库的理解是否正确。 或者,如果我缺少什么。

编辑:我看到我的理解是正确的。 关于我的特定问题,这是我的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>aviv</groupId>
    <artifactId>crunch-try</artifactId>
    <version>1.0-SNAPSHOT</version>

    <dependencies>
        <dependency>
            <groupId>org.apache.crunch</groupId>
            <artifactId>crunch-core</artifactId>
            <version>0.12.0-hadoop2</version>
        </dependency>
    </dependencies>

</project>

任何猜测为什么应用程序会失败? 我是否需要单独下载其他依赖项?

几个关键的依赖项都标记为“已提供”。 这意味着紧缩开发人员期望仅在有人或某物将它们添加到您的类路径的环境中使用它。 您需要在预期的环境中运行您的应用程序,或手动将所有提供的依赖项添加到pom中。

提供的依赖项完全在pom中的唯一原因是Maven尚未(尚未)区分“构建事物所需的pom的内容”和“使其他事物能够使用它的pom的内容”。 Maven不会下载这些文件,因为原始作者在说:“这个jar需要在hadoop中运行,而这些东西已经在hadoop的类路径中了。”

我在这个方便的地方读书。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM