您好,登錄后才能下訂單哦!
這期內容當中小編將會給大家帶來有關使用Maven2如何對plugin進行開發,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
首先,創建項目,創建一個文件夾:mkdir yakov
進入yakov目錄,然后創建一個pom.xml:touch pom.xml,這個xml文件的結構會在另外的章節詳細說一下。
使用vi編輯pom.xml,寫入基本的項目信息,如下圖:
單單是這些還是不夠的,接下來需要,配置一些私服和集成。
注:上面的version改為3.0
設置Maven從Nexus私服下載構件
可以設置某個項目從私服下載,設置項目的pom.xml如下:
<project> ... <repositories> <repository> <id>nexus</id> <name>Nexus</name> <url>http://202.117.15.193:8010/nexus/content/groups/public/</url> <releases><enabled>true</enabled></releases> <snapshots><enabled>true</enabled></snapshots> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>nexus</id> <name>Nexus</name> <url>http://202.117.15.193:8010/nexus/content/groups/public/</url> <releases><enabled>true</enabled></releases> <snapshots><enabled>true</enabled></snapshots> </pluginRepository> </pluginRepositories> ... </project>
但是這需要為每個項目配置一下,有可能你僅僅需要為你開發的所有項目都用這同一個私服,那么很好,settings.xml提供了profile來設置:
<settings> ... <profiles> <profile> <id>nexus</id> <repositories> <repository> <id>nexus</id> <name>Nexus</name> <url>http://202.117.15.193:8010/nexus/content/groups/public/</url> <releases><enabled>true</enabled></releases> <snapshots><enabled>true</enabled></snapshots> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>nexus</id> <name>Nexus</name> <url>http://202.117.15.193:8010/nexus/content/groups/public/</url> <releases><enabled>true</enabled></releases> <snapshots><enabled>true</enabled></snapshots> </pluginRepository> </pluginRepositories> </profile> </profiles> <activeProfiles> <activeProfile>nexus</activeProfile> </activeProfiles> ... </settings>
上面的配置是針對下載構件的,如果所有的下載都從私服上進行,就需要配置鏡像了!如下所示:
<settings> ... <mirrors> <mirror> <id>nexus</id> <mirrorOf>*</mirrorOf> <url>http://202.117.15.193:8010/nexus/content/groups/public/</url> </mirror> </mirrors> <profiles> <profile> <id>nexus</id> <repositories> <repository> <id>central</id> <url>http://central</url> <releases><enabled>true</enabled></releases> <snapshots><enabled>true</enabled></snapshots> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>central</id> <url>http://central</url> <releases><enabled>true</enabled></releases> <snapshots><enabled>true</enabled></snapshots> </pluginRepository> </pluginRepositories> </profile> </profiles> <activeProfiles> <activeProfile>nexus</activeProfile> </activeProfiles> ... </settings>
以上幾個任選一種就可以了,我這里使用了最后一種。
部署自己的構件至Nexus
直接在要部署的項目的pom.xml中寫入如下代碼:
還需要在settings.xml中設置用戶名和密碼,因為Nexus的倉庫對于匿名用戶是readonly的:
至此,有關私服已經設置好了!
在目錄src/main/java下編寫plugin
在yakov下創建src/main/java目錄
寫一個YakovMojo的類:
import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; import java.util.ArrayList; import java.util.List; import org.apache.maven.model.Resource; import org.apache.maven.plugin.AbstractMojo; import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.plugin.MojoFailureException; /** * * @author org.omylab.yakov * @goal yakov */ public class YakovMojo extends AbstractMojo{ private final String[] INCLUDES_DEFAULT={"java","xml","properties"}; /** * @parameter expression="${project.basedir}" * @required * @readonly */ private File basedir; /** * @parameter expression ="${project.build.sourceDirectory}" * @required * @readonly */ private File sourceDirectory; /** * @parameter expression ="${project.biuld.testSourceDirectory}" * @required * @readonly */ private File testSourceDirectory; /** * @parameter expression ="${project.build.resources}" * @required * @readonly */ private List<Resource> resources; /** * @parameter expression "${project.build.testResources}" * @required * @readonly */ private List<Resource> testResources; /** * The file types which will be included for counting * * @parameter */ private String[] includes; public void execute() throws MojoExecutionException, MojoFailureException{ if(includes==null||includes.length==0){ includes=INCLUDES_DEFAULT; } try{ countDir(sourceDirectory); countDir(testSourceDirectory); for(Resource resource:resources){ countDir(new File(resource.getDirectory())); } for(Resource resource:testResources){ countDir(new File(resource.getDirectory())); } }catch(IOException e){ throw new MojoExecutionException("Unable to count lines of code.",e); } } private void countDir(File dir)throws IOException{ if(!dir.exists())return; List<File> collected=new ArrayList<File>(); collectFiles(collected,dir); int lines=0; for(File sourceFile:collected){ lines+=countLine(sourceFile); } String path=dir.getAbsolutePath().substring(basedir.getAbsolutePath().length()); getLog().info(path+" : "+lines+" lines of code in "+collected.size()+" files"); } private void collectFiles(List<File> collected,File file){ if(file.isFile()){ for(String include:includes){ if(file.getName().endsWith("."+include)){ collected.add(file); break; } } }else{ for(File sub:file.listFiles()){ collectFiles(collected,sub); } } } private int countLine(File file)throws IOException{ BufferedReader reader=new BufferedReader(new FileReader(file)); int line =0; try{ while(reader.ready()){ reader.readLine(); line++; } }finally{ reader.close(); } return line; } }
然后運行mvn clean compile,運行結果如下:
編譯完成,這里可移執行安裝了,事實上,還應該有對應的測試代碼,以后再講。
運行mvn clean install完后就安裝成功了。
最后運行mvn clean deploy 完成發布,查看Nexus如下:
上述就是小編為大家分享的使用Maven2如何對plugin進行開發了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。