Netbeans:pom 类型的 Maven 依赖项

Posted

技术标签:

【中文标题】Netbeans:pom 类型的 Maven 依赖项【英文标题】:Netbeans: maven dependencies of type pom 【发布时间】:2012-10-03 19:52:27 【问题描述】:

我花了很多时间,我的头已经炸了,所以我会非常感谢任何帮助。

我正在将 Netbeans Platform 应用程序从 ant 迁移到 maven,因此我将版本控制存储库中的所有 jar 更改为 maven 依赖项。我在主 maven 存储库中找到了所需的工件,并在 Netbeans 的帮助下将其添加为依赖项,但它的类型为 POM 并放置在 Non-classpath Dependencies 中,我不知道如何使用它,因为它没有添加到类路径等......

谁能解释一下这些POM依赖是什么以及如何使用它们?

提前谢谢你!!

编辑

这是pom.xml中的依赖定义

<dependency>
    <groupId>com.kitfox.svg</groupId>
    <artifactId>svg-salamander</artifactId>
    <version>1.0</version>
    <type>pom</type>
</dependency>

【问题讨论】:

删除&lt;type&gt;pom&lt;/type&gt; 行不能解决问题吗? @rlegendi 当删除 &lt;type&gt;pom&lt;/type&gt; 结果是:Could not transfer artifact com.kitfox.svg:svg-salamander:jar:1.0 from/to junit_4 (http://repo1.maven.org/maven2/): No connector available to access repository junit_4 (http://repo1.maven.org/maven2/) of type test using the available factories WagonRepositoryConnectorFactory -&gt; [Help 1] 【参考方案1】:

添加pom依赖只会拉下传递依赖,即在pom中定义为依赖的jar依赖。由于显而易见的原因,pom 没有被添加到类路径中,但是可以从 pom 访问的传递依赖项将被添加到类路径中。

理想情况下,您需要做的是拥有jar 类型的依赖项默认依赖项类型是jar,您可以简单地定义依赖项,而无需在依赖项部分中添加任何type 元素。

如果你已经在 Maven Cental 中找到了你需要的 jar 文件,那么你只需要在依赖项部分中为每一个提供 groupId artifactId 和 version。

【讨论】:

【参考方案2】:

就我个人而言,我想不出任何需要添加pom 类型依赖的情况。我通常对项目中的父模块使用pom 打包(指定常见的项目配置,如插件版本、常见的依赖项,如log4j 例如存储库、属性等)和实用程序包模块(组装项目的模块)并做一些其他必要的事情)。

从我的经验来看(我做过几次),在将项目从 ant 迁移到 maven 时,您应该将项目曾经依赖的所有 jar 文件转换为 maven 依赖项(groupId:artifactId:version)。很可能所有这些依赖项都没有任何&lt;type&gt;(例如,是罐子)。

【讨论】:

也许我被误导了。因为我在 NetBeans 中通过搜索功能添加了此依赖项,并且只提供了添加 pom 类型的依赖项的选项 @Uko 我明白了。无论如何,我不建议添加 pom 类型依赖项。您应该明确声明您的项目所依赖的所有库。 在 maven book 中,他们建议在 pom 中对常见依赖项进行分组 - books.sonatype.com/mvnref-book/reference/… 我认为有一个用例或使用 pom 依赖。您可以通过组合添加公共依赖项,而不必通过公共父 POM(即继承)添加它们。以我个人的经验,有时父 POM 无法更改,因此必须人为添加中间 POM 以允许公共依赖项。该解决方案很混乱,可以通过在任意 POM 中具有公共依赖项来替换,然后将其作为依赖项包含在您选择的 POM 中,并具有 pom.xml 的依赖项类型。如前所述,包含 POM 意味着加载了所有传递依赖项。

以上是关于Netbeans:pom 类型的 Maven 依赖项的主要内容,如果未能解决你的问题,请参考以下文章

无法运行具有Maven依赖关系的OSGi捆绑软件

如何使用maven依赖插件将类型为pom的依赖项复制到一个位置

为啥 Netbeans 无法识别我的 Grails 应用程序中的 Maven 依赖项导入?

将 maven 项目导入 netbeans

如何在 Maven 中使用 POM 作为依赖项?

maven中怎么添加jar包不生效