簡體   English   中英

Maven 3 - 在.jar中分發自定義插件?

[英]Maven 3 - Distribute custom plugin in a .jar?

完成Maven newb,請原諒任何濫用的術語等。

我在Maven 3中構建了一個自定義插件(一個定義git rebase目標的插件)。 我能夠:

mvn install

沒問題。 然后我可以從命令行調用目標:

mvn edu.clemson.cs.rsrg:git-plugin:rebase

一切都是金色的。 我有一個可愛的git-plugin-XXX.jar文件,位於我的target目錄中。

我想讓我的自定義目標可用於另一個項目,這樣當開發團隊的其他成員拉下該項目的源時,他們就可以免費獲得我的插件(或者至少在mvn build )。

我的理解是,純粹的解決方案是為該組設置一個maven repo並在那里加載我的插件,但這對於一個hacky插件來說似乎有些過分。

思考?


到目前為止,我通過三個不同的插件玩過它:

  • addjars-maven-plugin:add-jars

    \n <插件>\n    <的groupId> com.googlecode.addjars-行家-插件</的groupId>\n    <artifactId的> addjars-行家-插件</ artifactId的>\n    <版本> 1.0.4 </版本>\n    <處決>\n       <執行>\n          <目標>\n             <目標>的附加罐</目標>\n          </目標>\n          <結構>\n             <資源>\n                <資源>\n                   <目錄> $ {BASEDIR} /插件</目錄>\n                </資源>\n             </資源>\n          </配置>\n       </執行>\n    </處決>\n </插件>\n

mvn build期間給我這個錯誤:

[ERROR] Error resolving version for plugin 'edu.clemson.cs.rsrg:git-plugin' from the repositories [local (/home/hamptos/.m2/repository), central (http://repo.maven.apache.org/maven2)]: Plugin not found in any plugin repository

它還會導致我以后的格式化插件失敗。 (顯然,它讀取了jar並確定了組名/插件名稱,但它會在我的本地倉庫中查找它嗎?當然它不在那里 - 我正在嘗試安裝它。)

  • build-helper:attach-artifacts

    \n <插件>\n    <的groupId> org.codehaus.mojo </的groupId>\n    <artifactId的>構建輔助-行家-插件</ artifactId的>\n    <版本> 1.7 </版本>\n    <處決>\n       <執行>\n          <ID>附的工件</ ID>\n          <階段>安裝</相位>\n          <目標>\n             <目標>附加偽影</目標>\n          </目標>\n          <結構>\n             <工件>\n                <工件>\n                   <文件> $ {BASEDIR} /plugins/git-plugin-0.1.0a.jar </ FILE>\n                   <類型>罐</類型>\n                </偽影>\n             </偽影>\n          </配置>\n       </執行>\n    </處決>\n </插件>\n

mvn build期間給我這個錯誤:

[ERROR] Failed to execute goal org.codehaus.mojo:build-helper-maven-plugin:1.7:attach-artifact (attach-artifacts) on project RESOLVE: Execution attach-artifacts of goal org.codehaus.mojo:build-helper-maven-plugin:1.7:attach-artifact failed: For artifact {edu.clemson.cs.rsrg:RESOLVE:12.09.01a:jar}: An attached artifact must have a different ID than its corresponding main artifact.

(解決方案:12.09.01a是主要項目。顯然這里有些東西出了問題,因為插件和主要項目肯定有不同的artifactIDs。嘗試將項目附加在自己的頂部可能?)

  • maven-install-plugin:install-file

    \n <插件>\n    <的groupId> org.apache.maven.plugins </的groupId>\n    <artifactId的>行家安裝-插件</ artifactId的>\n    <版本> 2.3.1 </版本>\n    <處決>\n       <執行>\n          <ID>安裝-GIT-插件</ ID>\n          <階段>初始化</相位>\n          <目標>\n             <目標>安裝文件</目標>\n          </目標>\n          <結構>\n             <文件> $ {BASEDIR} /plugins/git-plugin-0.1.0a.jar </ FILE>\n             <包裝>罐</包裝>\n             <的groupId> edu.clemson.cs.rsrg </的groupId>\n             <artifactId的> GIT-插件</ artifactId的>\n             <版本> 0.1.0a </版本>\n          </配置>\n       </執行>\n    </處決>\n </插件>\n

似乎工作正常,直到我嘗試調用其中一個目標,如mvn edu.clemson.cs.rsrg:git-plugin:rebase ,此時它給了我這個錯誤:

[ERROR] Failed to execute goal edu.clemson.cs.rsrg:git-plugin:0.1.0a:rebase (default-cli) on project RESOLVE: Execution default-cli of goal edu.clemson.cs.rsrg:git-plugin:0.1.0a:rebase failed: Unable to load the mojo 'rebase' (or one of its required components) from the plugin 'edu.clemson.cs.rsrg:git-plugin:0.1.0a': com.google.inject.ProvisionException: Guice provision errors: [ERROR] [ERROR] 1) Error in ComponentFactory:ant-mojo [ERROR] at ClassRealm[plugin>edu.clemson.cs.rsrg:git-plugin:0.1.0a, parent: sun.misc.Launcher$AppClassLoader@e776f7] [ERROR] while locating org.apache.maven.plugin.Mojo annotated with @com.google.inject.name.Named(value=edu.clemson.cs.rsrg:git-plugin:0.1.0a:rebase)

你可能認為它很黑,但它是maven的方式。 它需要部署到maven倉庫。

如果你將它保存在一個你可以證明擁有的groupId中,並且它是開源的,你可以將它發布到central

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM