一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - Java教程 - Maven2 plugin開發(fā)教程詳解

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

2020-11-25 10:45Yakov Java教程

這篇文章主要為大家詳細(xì)介紹了Maven2 plugin的開發(fā)教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

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

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

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

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

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

注:上面的version改為3.0

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

設(shè)置maven從nexus私服下載構(gòu)件

可以設(shè)置某個(gè)項(xiàng)目從私服下載,設(shè)置項(xiàng)目的pom.xml如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<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>

但是這需要為每個(gè)項(xiàng)目配置一下,有可能你僅僅需要為你開發(fā)的所有項(xiàng)目都用這同一個(gè)私服,那么很好,settings.xml提供了profile來設(shè)置:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<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>

上面的配置是針對(duì)下載構(gòu)件的,如果所有的下載都從私服上進(jìn)行,就需要配置鏡像了!如下所示:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<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>

以上幾個(gè)任選一種就可以了,我這里使用了最后一種。

部署自己的構(gòu)件至nexus

直接在要部署的項(xiàng)目的pom.xml中寫入如下代碼:

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

還需要在settings.xml中設(shè)置用戶名和密碼,因?yàn)閚exus的倉庫對(duì)于匿名用戶是readonly的:

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

至此,有關(guān)私服已經(jīng)設(shè)置好了!

在目錄src/main/java下編寫plugin

在yakov下創(chuàng)建src/main/java目錄
寫一個(gè)yakovmojo的類:

 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
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;
  }
 
}

然后運(yùn)行mvn clean compile,運(yùn)行結(jié)果如下:

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

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

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

運(yùn)行mvn clean install完后就安裝成功了。

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

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

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持服務(wù)器之家。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 97影视| 本站只有精品 | 国产91免费在线 | 精品无码一区二区三区中文字幕 | 午夜亚洲一区二区福利 | 毛片一级免费 | 性色生活片在线观看 | 欧美极品摘花过程 | 国产男女爱视频在线观看 | 婷婷色在线观看 | 丰满岳乱妇在线观看视频国产 | 日本中出视频 | 手机av影院 | 热99精品只有里视频最新 | 天天干夜夜玩 | 久久久久999| 日韩欧美色图 | 欧式午夜理伦三级在线观看 | 日本伊人色综合网 | 高h喷水荡肉爽文np肉色文 | 久久精品国产欧美日韩99热 | 亚欧洲乱码视频一二三区 | ass巨大胖女人sias | 色综七七久久成人影 | 久久综合网久久综合 | 网址在线观看你懂我意思吧免费的 | 催眠 迷j系列小说 | 91普通话国产对白在线 | 欧美日本一道高清二区三区 | 国产日韩欧美 | 哇嘎在线精品视频在线观看 | 午夜精品网| 国产精品第四页 | 国产亚洲精品aaa大片 | 成人亚洲精品一区 | 嘿嘿午夜 | 高贵女王调奴vk | 69萝莉| 亚洲国产高清视频 | 国产精品污双胞胎在线观看 | 91美女在线视频 |