2013-06-28 287 views
0

我一直無法找到有關此問題的具體答案。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,特別「束」的簡稱,我收到錯誤:

Unable to load the mojo 'bundle' in the plugin 'org.codehaus.mojo:osxappbundle-maven-plugin:1.0-alpha-4-SNAPSHOT'. A required call is missing: 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> 
+2

向我們展示如何引用這個插件在POM – jtomaszk

+0

問題更新。 – CAM79

回答

3

插件的處理方式爲項目依賴相同。原始插件在其pom.xml中引用的任何依賴關係都將在運行時放在類路徑中。

通常在插件的pom.xml中更改<version>標記並運行mvn install就足夠了。這會將jar和pom文件安裝到本地存儲庫。使用一個明確表示它不是正式版本的版本,例如1.2.3-CUSTOM-SNAPSHOT。然後在應用程序的pom文件中將依賴關係更改爲此版本,並且它應該按預期工作。

如果因任何原因必須直接使用invoke install插件,則應始終在jar文件中安裝合適的pom.xml。使用-DpomFile=/path/to/pom.xml指定正確的pom插件的路徑。 -DgeneratePom=true只會生成一個簡約的pom,如果這個工件和版本在版本庫中還沒有pom.xml。這個pom文件不會指定任何依賴關係。所以如果你的jar/plugin有任何依賴關係,請不要使用這個選項。

參考文獻:

+0

我很困惑 - 你認爲OP做錯了什麼? OP在命令行中包含'-DgeneratePom = true'。 –

+0

據我瞭解這個問題,OP正試圖用自己的實現來替換已經工作過的插件。原來的插件似乎依賴於其他未加載的jar,因爲修改後的插件使用生成的「pom.xml」而不是帶有正確的「dependencies」部分的pom。 – nif

+0

這是一個很好的回答 - 試着將這些措辭編成你答案的正文,因爲這不是你的意思。 –