1

我一直无法找到专门针对此问题的答案。

我已经使用以下命令成功地手动安装了一个修补的 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>
4

1 回答 1

4

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

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

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

参考:

于 2013-06-28T13:23:29.703 回答