一、生命周期
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項目。