最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Maven2 plugin開發(fā)教程詳解

 更新時間:2017年06月28日 11:46:59   作者:Yakov  
這篇文章主要為大家詳細介紹了Maven2 plugin的開發(fā)教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下

首先,創(chuàng)建項目,創(chuàng)建一個文件夾:mkdir yakov

進入yakov目錄,然后創(chuàng)建一個pom.xml:touch pom.xml,這個xml文件的結構會在另外的章節(jié)詳細說一下。

使用vi編輯pom.xml,寫入基本的項目信息,如下圖:

單單是這些還是不夠的,接下來需要,配置一些私服和集成。

注:上面的version改為3.0

有關的私服和集成服務在上一篇中寫過:http://www.cnblogs.com/yakov/archive/2011/11/19/maven2_shi_jian.html

設置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>

但是這需要為每個項目配置一下,有可能你僅僅需要為你開發(fā)的所有項目都用這同一個私服,那么很好,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下創(chuàng)建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,運行結果如下:

編譯完成,這里可移執(zhí)行安裝了,事實上,還應該有對應的測試代碼,以后再講。

運行mvn clean install完后就安裝成功了。

最后運行mvn clean deploy 完成發(fā)布,查看Nexus如下:

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • Spring Boot 集成 Mybatis Plus 自動填充字段的實例詳解

    Spring Boot 集成 Mybatis Plus 自動填充字段的實例詳解

    這篇文章主要介紹了Spring Boot 集成 Mybatis Plus 自動填充字段,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03
  • java編程小白進階包的作用詳解

    java編程小白進階包的作用詳解

    這篇文章主要為大家介紹了java編程中包的作用詳解,文中通過示例分析方便大家更容易理解包的作用,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-10-10
  • springboot整合redis過期key監(jiān)聽實現(xiàn)訂單過期的項目實踐

    springboot整合redis過期key監(jiān)聽實現(xiàn)訂單過期的項目實踐

    現(xiàn)在各種電商平臺都有自己的訂單過期時間設置,那么如何設置訂單時間過期呢,本文主要介紹了springboot整合redis過期key監(jiān)聽實現(xiàn)訂單過期的項目實踐,感興趣的可以了解一下
    2023-12-12
  • 詳解SpringBoot多跨域請求的支持(JSONP)

    詳解SpringBoot多跨域請求的支持(JSONP)

    跨域是很多項目需要遇到的文章,本篇文章主要介紹了詳解SpringBoot多跨域請求的支持(JSONP),具有一定的參考價值,有興趣的可以了解一下
    2017-04-04
  • 基于Java方式實現(xiàn)數據同步

    基于Java方式實現(xiàn)數據同步

    這篇文章主要為大家詳細介紹了基于Java方式實現(xiàn)數據同步,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • Springboot Caffeine本地緩存使用示例

    Springboot Caffeine本地緩存使用示例

    這篇文章主要介紹了Springboot Caffeine本地緩存使用示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-11-11
  • Java繼承方法重寫實現(xiàn)原理及解析

    Java繼承方法重寫實現(xiàn)原理及解析

    這篇文章主要介紹了Java繼承方法重寫實現(xiàn)原理及解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-12-12
  • Java讀取json數據并存入數據庫的操作代碼

    Java讀取json數據并存入數據庫的操作代碼

    很多朋友問大佬們JAVA怎么把json存入數據庫啊,這一問題就把我難倒了,糾結如何操作呢,下面小編把我的經驗分享給大家,感興趣的朋友一起看看吧
    2021-08-08
  • Java對世界不同時區(qū)timezone之間時間轉換的處理方法

    Java對世界不同時區(qū)timezone之間時間轉換的處理方法

    這篇文章主要介紹了Java對世界不同時區(qū)timezone之間時間轉換的處理方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-07-07
  • 使用@PathVariable注解如何實現(xiàn)動態(tài)傳值

    使用@PathVariable注解如何實現(xiàn)動態(tài)傳值

    這篇文章主要介紹了使用@PathVariable注解如何實現(xiàn)動態(tài)傳值,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-10-10

最新評論

浦东新区| 东兴市| 航空| 海淀区| 云梦县| 清远市| 大同县| 岑溪市| 鸡西市| 丰都县| 孝感市| 许昌县| 桐乡市| 南汇区| 阿坝县| 齐河县| 龙泉市| 滨海县| 牙克石市| 文安县| 余江县| 昌黎县| 邳州市| 满洲里市| 观塘区| 康定县| 枣强县| 贵定县| 田东县| 昌吉市| 洪洞县| 隆回县| 黄大仙区| 黎川县| 正蓝旗| 松溪县| 奉化市| 汝州市| 定陶县| 江华| 积石山|