一、生命周期
maven有三套生命周期:分别为clean
、compile
、site
。三个生命周期不会互相关联,而每个生命周期中又分成很多个步骤。这里主要介绍前两个。
1.1 clean
clean这个生命周期分成三个阶段:
pre-clean
执行一些需要在clean之前完成的工作clean
移除所有上一次构建生成的文件post-clean
执行一些需要在clean之后立刻完成的工作
1.2 compile
-
validate
验证 generate-sources
process-sources
generate-resources
-
process-resources
复制并处理资源文件,至目标目录,准备打包。 -
compile
编译项目的源代码。 process-classes
generate-test-sources
process-test-sources
generate-test-resources
-
process-test-resources
复制并处理资源文件,至目标测试目录。 -
test-compile
编译测试源代码。 process-test-classes
-
test
使用合适的单元测试框架运行测试。这些测试代码不会被打包或部署。 prepare-package
-
package
接受编译好的代码,打包成可发布的格式,如 JAR 。 pre-integration-test
integration-test
post-integration-test
verify
-
install
将包安装至本地仓库,以让其它项目依赖。 -
deploy
将最终的包复制到远程的仓库,以让其它开发人员与项目共享。
说明:这里只是一个简单介绍,在后面在详细说明。
二、插件
插件是maven的核心,所有执行的操作都是基于插件来完成的。为了让一个插件中可以实现众多类似的功能,maven为插件设定了目标,一个插件中可能有多个目标。
2.1 使用
(1)打包源代码插件
我们可以在http://maven.apache.org/plugins/index.html
中找到各类的插件,比如我们想将源代码打包(默认是不打包源代码的)需要使用source
插件,点开source
之后在最上面我们可以看到此插件有多个goal
我们向对源代码打包是使用第四个插件,在最下面的例子中我们可以看到配置信息,比如我们在
user-core
中进行配置:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>3.0.0</version>
</plugin>
</plugins>
</build>
此配置信息放在配置文件的最后。然后使用命令source:jar-no-fork
就可以将源代码打包。当然我们也可以在user-parent
中进行配置管理所有的插件
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>3.0.0</version>
<executions>
<execution>
<phase>package</phase>
<goals><goal>jar-no-fork</goal></goals>
</execution>
</executions>
</plugin>
</plugins>
</pluginManagement>
</build>
注意:<executions>
标签中配置插件的声明周期,此处我们配置的是在package
之后就打包源代码。
(2)help插件
使用的时候一般不需要配置,直接使用命令比如:
mvn help:describe -DgroupId=org.somewhere -DartifactId=some-plugin -Dversion=0.0.0
就可以运行看到某个插件的相关信息,但是这样很麻烦。
还有其他方式:
mvn help:describe -Dplugin=org.somewhere:some-plugin:0.0.0
注意:上面两个命令都是在命令行的使用,在MyEclipse中不需要前面的mvn
。
当然最好的方式还是使用前缀,比如compile
插件的前缀就是compiler
:
help:describe –Dplugin=compiler
但是这种方式不是每个插件都能成功。
(3)sql插件
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>sql-maven-plugin</artifactId>
<version>1.5</version>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.38</version>
</dependency>
</dependencies>
<configuration>
<driver>com.mysql.jdbc.Driver</driver>
<url>jdbc:mysql://localhost:3305</url>
<username>root</username>
<password>walp1314</password>
<sqlCommand>
create database IF NOT EXISTS maven_test
</sqlCommand>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals><goal>execute</goal></goals>
</execution>
</executions>
</plugin>
注意:如果出错,很可能是插件的版本不对。此插件依赖jdbc
,所以我们需要给其配置相关的jdbc
依赖。依赖中的最后一项是执行的sql语句。最后是绑定其声明周期在package
上。
最后:这里只是做一个简单的说明,在后面再详细说明。后面还有使用maven管理发布web项目。