【问题标题】:Maven plugin dependenciesMaven 插件依赖
【发布时间】:2013-06-29 00:12:14
【问题描述】:

我还没有找到专门针对这个问题的答案。

我已经成功地手动安装了一个打补丁的 maven 插件 jar 文件(osxappbundle):

mvn install:install-file -Dfile=osxappbundle-maven-plugin-1.0-alpha-4-SNAPSHOT.jar -Dpackaging=jar -DgroupId=org.codehaus.mojo -DartifactId=osxappbundle-maven-plugin -Dversion=1.0-alpha-4-SNAPSHOT -DgeneratePom=true

当在 pom 中引用插件时,特别是“bundle”,我收到错误:

无法在插件 'org.codehaus.mojo:osxappbundle-maven-plugin:1.0-alpha-4-SNAPSHOT' 中加载 mojo 'bundle'。缺少必需的调用:org/apache/velocity/exception/MethodInvocationException。

org.apache.velocity 肯定已安装并且在我的本地存储库 (.m2) 中,但未找到。如果我手动将类文件添加到找到它们的 jar 中,那么这表明它没有使用本地存储库解析依赖关系。

我认为这是因为我手动安装了 jar 文件。

如果手动安装了jar,会不会只解析jar里面的依赖而不看外面?

插件在 pom 中是这样引用的:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>osxappbundle-maven-plugin</artifactId>
    <version>1.0-alpha-4-SNAPSHOT</version>
    <configuration>
    </configuration>
    <executions>
        <execution>
            <phase>package</phase>
                <goals>
                    <goal>bundle</goal>
                </goals>
        </execution>
    </executions>
</plugin>

【问题讨论】:

  • 告诉我们你如何在 pom 中引用这个插件

标签: java maven maven-plugin


【解决方案1】:

插件的处理方式与项目依赖项相同。原始插件在其pom.xml 中引用的任何依赖项都会在运行时放在类路径中。

更改插件的pom.xml 中的&lt;version&gt; 标签并运行mvn install 通常就足够了。这会将 jar 和 pom 文件安装到本地存储库。使用明确表明它不是官方版本的版本,例如1.2.3-CUSTOM-SNAPSHOT。然后在应用程序的 pom 文件中将依赖项更改为此版本,它应该可以按预期工作。

如果您出于任何原因必须直接使用调用安装插件,您应该始终在您的 jar 文件中安装正确的pom.xml。使用 -DpomFile=/path/to/pom.xml 指定插件正确 pom 的路径。 -DgeneratePom=true 将仅生成一个简约的 pom,如果存储库中还没有此工件和版本的 pom.xml。这个 pom 文件不会指定任何依赖项。因此,如果您的 jar/插件有任何依赖项,请不要使用此选项。

参考资料:

【讨论】:

  • 我很困惑 - 你认为 OP 做错了什么? OP 在命令行中包含 -DgeneratePom=true
  • 据我了解问题,OP 正在尝试用自己的实现替换已经工作的插件。原始插件似乎依赖于其他未加载的 jar,因为修改后的插件使用生成的 pom.xml 而不是带有正确 dependencies 部分的 pom。
  • 这是一个很好的回应 - 尝试将一些措辞编织到你的答案正文中,因为你的意思并不明显。
  • @DuncanJones:感谢您的反馈,我更改了措辞。
  • 谢谢你!你很准!那一定是我唯一没有尝试过的事情。我将依赖项添加到生成的 pom 中,并清除了所有错误。非常感谢!
猜你喜欢
  • 2012-06-30
  • 2015-05-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多