我无法就此问题找到答案。
我使用以下方法手动(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>
答案 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 /插件有任何依赖关系,请不要使用此选项。
<强>参考文献:强>