Maven插件

本文内容来自:http://maven.apache.org/

插件配置

Maven中,有两种插件:

  1. Build plugins:在构建的时候执行,在pom的build元素中配置
  2. Reporting plugins:在站点产生时执行,在reporting元素中配置

所有插件,最少都要声明三个信息:groupId, artifactId 和 version

通用配置

Maven插件通过configuration元素(plugin元素的子元素)来配置,它的子元素和其Mojo的成员变量或者setter方法相对应,元素名和成员变量相同。一个插件包含一个或多个Mojo,而一个Mojo和一个goal相对应,Mojo是一个继承了AbstractMojo的类。
如果通过命令行直接执行Mojo,参数一般通过系统属性来提供(在命令行中指定),在插件的文档中会列出系统属性对应的表达式

help goal

最近的插件开始包含一个help的goal,在使用命令行时可以用来描述该插件,使用方法如下:

mvn javadoc:help -Ddetail -Dgoal=javadoc
配置参数
1. 简单对象映射:这个非常简单,具体如下:
2.<configuration>
3.  <myString>a string</myString>
4.  <myBoolean>true</myBoolean>
5.  <myInteger>10</myInteger>
6.  <myDouble>1.0</myDouble>
7.  <myFile>c:\temp</myFile>
8.  <myURL>http://maven.apache.org</myURL>
9.</configuration>
2. 复杂对象映射

如下配置一个Person对象:

...
2.<configuration>
3.  <person>
4.    <firstName>Jason</firstName>
5.    <lastName>van Zyl</lastName>
6.  </person>
7.</configuration>
8....

复杂对象的映射原则如下:

  • 必须有一个私有成员变量和元素名相对应,所以上个例子中person元素必须和mojo的person成员变量相对应
  • 对象必须和pojo在同个包下被实例化,加载机制会把元素名的第一个字母大写并将其用来查找对象进行实例化
  • 如果要把对象实例化到其他包或者起个复杂的名字,我们可以使用implementation ,如下所示:
...
2.<configuration>
3.  <person implementation="com.mycompany.mojo.query.SuperPerson">
4.    <firstName>Jason</firstName>
5.    <lastName>van Zyl</lastName>
6.  </person>
7.</configuration>
8....
3.集合映射

列表的映射如下:

1.<project>
2.  ...
3.  <build>
4.    <plugins>
5.      <plugin>
6.        <artifactId>maven-myanimal-plugin</artifactId>
7.        <version>1.0</version>
8.        <configuration>
9.          <animals>
10.            <animal>cat</animal>
11.            <animal>dog</animal>
12.            <animal>aardvark</animal>
13.          </animals>
14.        </configuration>
15.      </plugin>
16.    </plugins>
17.  </build>
18.  ...
19.</project>

4.Map映射

Map的参数设置如下:

  <configuration>
3.    <myMap>
4.      <key1>value1</key1>
5.      <key2>value2</key2>
6.    </myMap>
7.  </configuration>
5.Properties映射
  <configuration>
3.    <myProperties>
4.      <property>
5.        <name>propertyName1</name>
6.        <value>propertyValue1</value>
7.      <property>
8.      <property>
9.        <name>propertyName2</name>
10.        <value>propertyValue2</value>
11.      <property>
12.    </myProperties>
13.  </configuration>

配置Build插件

以下仅在build元素中配置build插件

executions标签

当mojo要参与一些lifecycle的phase时,常使用executions标签来配置。如下代码所示:

1.<project>
2.  ...
3.  <build>
4.    <plugins>
5.      <plugin>
6.        <artifactId>maven-myquery-plugin</artifactId>
7.        <version>1.0</version>
8.        <executions>
9.          <execution>
10.            <id>execution1</id>
11.            <phase>test</phase>
12.            <configuration>
13.              <url>http://www.foo.com/query</url>
14.              <timeout>10</timeout>
15.              <options>
16.                <option>one</option>
17.                <option>two</option>
18.                <option>three</option>
19.              </options>
20.            </configuration>
21.            <goals>
22.              <goal>query</goal>
23.            </goals>
24.          </execution>
25.          <execution>
26.            <id>execution2</id>
27.            <configuration>
28.              <url>http://www.bar.com/query</url>
29.              <timeout>15</timeout>
30.              <options>
31.                <option>four</option>
32.                <option>five</option>
33.                <option>six</option>
34.              </options>
35.            </configuration>
36.            <goals>
37.              <goal>query</goal>
38.            </goals>
39.          </execution>
40.        </executions>
41.      </plugin>
42.    </plugins>
43.  </build>
44.  ...
45.</project>

第一个id为”execution1“的execution 元素把其配置绑定到test phase上,第二个execution没有phase标签,goals可以绑定一个默认的phase,但如果goals没有绑定默认的phase,则它在build lifecycle中不会执行。一个pom中一个plugin的每个execution的id必须是唯一的,但继承该pom的execution id不需要是唯一的,所有id重复的execution 会被合并。
在executions里的配置不能使用命令行来调用,因为它们是被绑定到phase上的,但在maven3.3.1以后,可以使用以下方式来调用execution中的配置:

mvn myqyeryplugin:queryMojo@execution1
dependencies标签

可以在plugin中配置dependencies,通常用来使用最新版本的依赖。

inherited标签

默认情况下,plugin的配置会被继承到子pom中,要取消继承,可以使用以下配置:

<inherited>false</inherited>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
信息数据从传统到当代,是一直在变革当中,突如其来的互联网让传统的信息管理看到了革命性的曙光,因为传统信息管理从时效性,还是安全性,还是可操作性等各个方面来讲,遇到了互联网时代才发现能补上自古以来的短板,有效的提升管理的效率和业务水平。传统的管理模式,时间越久管理的内容越多,也需要更多的人来对数据进行整理,并且数据的汇总查询方面效率也是极其的低下,并且数据安全方面永远不会保证安全性能。结合数据内容管理的种种缺点,在互联网时代都可以得到有效的补充。结合先进的互联网技术,开发符合需求的软件,让数据内容管理不管是从录入的及时性,查看的及时性还是汇总分析的及时性,都能让正确率达到最高,管理更加的科学和便捷。本次开发的高校科研信息管理系统实现了操作日志管理、字典管理、反馈管理、公告管理、科研成果管理、科研项目管理、通知管理、学术活动管理、学院部门管理、科研人员管理、管理员管理等功能。系统用到了关系型数据库中王者MySql作为系统的数据库,有效的对数据进行安全的存储,有效的备份,对数据可靠性方面得到了保证。并且程序也具备程序需求的所有功能,使得操作性还是安全性都大大提高,让高校科研信息管理系统更能从理念走到现实,确确实实的让人们提升信息处理效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值