Maven插件依赖项

时间:2013-06-28 13:02:41

标签: java maven maven-plugin

我无法就此问题找到答案。

我使用以下方法手动(osxappbundle)成功安装了修补的maven插件jar文件:

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中加载mojo'bund':osxappbundle-maven-plugin:1.0-alpha-4-SNAPSHOT'。缺少必需的调用: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>

1 个答案:

答案 0 :(得分:3)

插件的处理方式与项目依赖关系相同。无论原始插件在其pom.xml中引用的依赖项是什么,都会在运行时放在类路径上。

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

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

<强>参考文献: