插件(plugin)和目标(goal)
Maven,就其本质而言,是一个插件执行框架,Maven的每个目标的执行逻辑都是由插件来完成的,一个插件可以有1个或者几个目标,比如maven-compiler-plugin插件包含compile和testCompile,即maven-compiler-plugin提供了源代码编译和测试源代码编译的两个目标
使用插件和目标使得我们可以干预Maven构建框架的构建过程
Maven提供的插件列表
| Plugin | Type* | Version | Release Date | Description | Source Repository | Issue Tracking |
|---|---|---|---|---|---|---|
| Core plugins | Plugins corresponding to default core phases (ie. clean, compile). They may have multiple goals as well. | |||||
| clean | B | 2.5 | 2012-05-26 | Clean up after the build. | SVN | JIRA |
| compiler | B | 3.1 | 2013-04-08 | Compiles Java sources. | SVN | JIRA |
| deploy | B | 2.8.1 | 2013-10-18 | Deploy the built artifact to the remote repository. | SVN | JIRA |
| failsafe | B | 2.17 | 2014-03-16 | Run the JUnit integration tests in an isolated classloader. | GIT | JIRA |
| install | B | 2.5.1 | 2013-10-18 | Install the built artifact into the local repository. | SVN | JIRA |
| resources | B | 2.6 | 2012-08-18 | Copy the resources to the output directory for including in the JAR. | SVN | JIRA |
| site | B | 3.4 | 2014-07-07 | Generate a site for the current project. | SVN | JIRA |
| surefire | B | 2.17 | 2014-03-16 | Run the JUnit unit tests in an isolated classloader. | GIT | JIRA |
| verifier | B | 1.0 | 2010-01-30 | Useful for integration tests - verifies the existence of certain conditions. | SVN | JIRA |
| Packaging types/tools | These plugins relate to packaging respective artifact types. | |||||
| ear | B | 2.9.1 | 2014-06-15 | Generate an EAR from the current project. | SVN | JIRA |
| ejb | B | 2.3 | 2010-09-18 | Build an EJB (and optional client) from the current project. | SVN | JIRA |
| jar | B | 2.5 | 2014-06-19 | Build a JAR from the current project. | SVN | JIRA |
| rar | B | 2.3 | 2012-11-22 | Build a RAR from the current project. | SVN | JIRA |
| war | B | 2.4 | 2013-07-07 | Build a WAR from the current project. | SVN | JIRA |
| app-client/acr | B | 1.0 | 2011-03-31 | Build a JavaEE application client from the current project. | SVN | JIRA |
| shade | B | 2.3 | 2014-05-02 | Build an Uber-JAR from the current project, including dependencies. | SVN | JIRA |
| source | B | 2.3 | 2014-07-08 | Build a source-JAR from the current project. | SVN | JIRA |
| Reporting plugins | Plugins which generate reports, are configured as reports in the POM and run under the site generation lifecycle. | |||||
| changelog | R | 2.3 | 2014-06-24 | Generate a list of recent changes from your SCM. | SVN | JIRA |
| changes | B+R | 2.10 | 2014-04-13 | Generate a report from an issue tracker or a change document. | SVN | JIRA |
| checkstyle | B+R | 2.12.1 | 2014-04-19 | Generate a Checkstyle report. | SVN | JIRA |
| doap | B | 1.1 | 2011-01-15 | Generate a Description of a Project (DOAP) file from a POM. | SVN | JIRA |
| docck | B | 1.0 | 2008-11-16 | Documentation checker plugin. | SVN | JIRA |
| javadoc | B+R | 2.9.1 | 2013-06-28 | Generate Javadoc for the project. | SVN | JIRA |
| jxr | R | 2.4 | 2013-12-10 | Generate a source cross reference. | SVN | JIRA |
| linkcheck | R | 1.1 | 2010-11-13 | Generate a Linkcheck report of your project's documentation. | SVN | JIRA |
| pmd | B+R | 3.2 | 2014-08-01 | Generate a PMD report. | SVN | JIRA |
| project-info-reports | R | 2.7 | 2013-05-16 | Generate standard project reports. | SVN | JIRA |
| surefire-report | R | 2.17 | 2014-03-16 | Generate a report based on the results of unit tests. | GIT | JIRA |
| Tools | These are miscellaneous tools available through Maven by default. | |||||
| ant | B | 2.3 | 2009-11-11 | Generate an Ant build file for the project. | SVN | JIRA |
| antrun | B | 1.7 | 2011-11-01 | Run a set of ant tasks from a phase of the build. | SVN | JIRA |
| archetype | B | 2.2 | 2011-11-19 | Generate a skeleton project structure from an archetype. | SVN | JIRA |
| assembly | B | 2.4 | 2012-11-18 | Build an assembly (distribution) of sources and/or binaries. | SVN | JIRA |
| dependency | B+R | 2.8 | 2013-05-18 | Dependency manipulation (copy, unpack) and analysis. | SVN | JIRA |
| enforcer | B | 1.3.1 | 2013-07-12 | Environmental constraint checking (Maven Version, JDK etc), User Custom Rule Execution. | SVN | JIRA |
| gpg | B | 1.5 | 2014-02-25 | Create signatures for the artifacts and poms. | SVN | JIRA |
| help | B | 2.2 | 2013-02-23 | Get information about the working environment for the project. | SVN | JIRA |
| invoker | B+R | 1.9 | 2014-06-28 | Run a set of Maven projects and verify the output. | SVN | JIRA |
| jarsigner | B | 1.3.2 | 2014-03-23 | Signs or verifies project artifacts. | SVN | JIRA |
| patch | B | 1.1.1 | 2010-01-06 | Use the gnu patch tool to apply patch files to source code. | SVN | JIRA |
| B | 1.2 | 2012-11-08 | Generate a PDF version of your project's documentation. | SVN | JIRA | |
| plugin | B+R | 3.3 | 2014-05-03 | Create a Maven plugin descriptor for any mojos found in the source tree, to include in the JAR. | SVN | JIRA |
| release | B | 2.5 | 2014-03-04 | Release the current project - updating the POM and tagging in the SCM. | SVN | JIRA |
| remote-resources | B | 1.5 | 2013-08-14 | Copy remote resources to the output directory for inclusion in the artifact. | SVN | JIRA |
| repository | B | 2.3.1 | 2010-07-21 | Plugin to help with repository-based tasks. | SVN | JIRA |
| scm | B | 1.9.1 | 2014-07-20 | Execute SCM commands for the current project. | GIT | JIRA |
| scm-publish | B | 1.1 | 2014-05-18 | Publish your Maven website to a scm location. | SVN | JIRA |
| stage | B | 1.0-alpha-2 | 2009-07-14 | Assists with release staging and promotion. | SVN | JIRA |
| toolchains | B | 1.0 | 2009-11-01 | Allows to share configuration across plugins. | SVN | JIRA |
| IDEs | Plugins that simplify integration with integrated developer environments. | |||||
| eclipse | B | 2.9 | 2012-02-14 | Generate an Eclipse project file for the current project. | SVN | JIRA |
1. B表示是构建(Build)类型的插件,R表示是报表(Report)类型的。比如surefire-report插件是Report类型的插件用于report单元测试的结果
2. SVN是每个插件在SVN上的源代码,比如compiler插件,它的源代码路径是http://svn.apache.org/repos/asf/maven/plugins/trunk/maven-compiler-plugin
source插件用于把源代码打包
打包(pacakge)的同时将源代码打包
在user-core的pom.xml中添加如下的配置,指定在package阶段添加源代码打包的功能:
<build>
<plugins>
<plugin>
<!--指定源代码打包插件的坐标-->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>2.3</version>
<!--定义插件执行在哪些阶段执行哪些目标-->
<executions>
<execution>
<!---源代码打包插件在打包阶段执行-->
<phase>package</phase>
<!--源代码打包插件执行的目标,可以指定多个,只要插件支持-->
<goals>
<goal>jar</goal>
<!--测试代码打包-->
<!--
<goal>test-jar</goal>
-->
</goals>
</execution>
</executions>
<!--输出路径和文件名进行设置
<configuration>
<outputDirectory>/absolute/path/to/the/output/directory</outputDirectory>
<finalName>filename-of-generated-jar-file</finalName>
<attach>false</attach>
</configuration>
-->
</plugin>
</plugins>
</build>
执行Maven package,执行结果是
/software/devsoftware/jdk1.7.0_55/bin/java -Dmaven.home=/software/devsoftware/apache-maven-3.2.1 -Dclassworlds.conf=/software/devsoftware/apache-maven-3.2.1/bin/m2.conf -Didea.launcher.port=7536 -Didea.launcher.bin.path=/software/devsoftware/idea-IU-135.690/bin -Dfile.encoding=UTF-8 -classpath /software/devsoftware/apache-maven-3.2.1/boot/plexus-classworlds-2.5.1.jar:/software/devsoftware/idea-IU-135.690/lib/idea_rt.jar com.intellij.rt.execution.application.AppMain org.codehaus.classworlds.Launcher -Didea.version=13.1.2 package [INFO] Scanning for projects... [INFO] [INFO] Using the builder org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder with a thread count of 1 [INFO] [INFO] ------------------------------------------------------------------------ [INFO] Building user.core 1.0-SNAPSHOT [INFO] ------------------------------------------------------------------------ [INFO] [INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ user.core --- [WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent! [INFO] Copying 0 resource [INFO] [INFO] --- maven-compiler-plugin:2.5.1:compile (default-compile) @ user.core --- [INFO] Nothing to compile - all classes are up to date [INFO] [INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ user.core --- [WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent! [INFO] skip non existing resourceDirectory ~/development/learnmaven/user.manager/user.core/src/test/resources [INFO] [INFO] --- maven-compiler-plugin:2.5.1:testCompile (default-testCompile) @ user.core --- [INFO] Nothing to compile - all classes are up to date [INFO] [INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ user.core --- [INFO] Surefire report directory: ~/development/learnmaven/user.manager/user.core/target/surefire-reports ------------------------------------------------------- T E S T S ------------------------------------------------------- Running HelloTest Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.117 sec Results : Tests run: 1, Failures: 0, Errors: 0, Skipped: 0 [INFO] [INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ user.core --- [INFO] Building jar: /home/yuzhitao/development/learnmaven/user.manager/user.core/target/user.core-1.0-SNAPSHOT.jar [INFO] [INFO] >>> maven-source-plugin:2.3:jar (default) @ user.core >>> [INFO] [INFO] <<< maven-source-plugin:2.3:jar (default) @ user.core <<< [INFO] [INFO] --- maven-source-plugin:2.3:jar (default) @ user.core --- [INFO] Building jar: ~/development/learnmaven/user.manager/user.core/target/user.core-1.0-SNAPSHOT-sources.jar [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 3.597 s [INFO] Finished at: 2014-08-03T19:36:46+08:00 [INFO] Final Memory: 13M/169M [INFO] ------------------------------------------------------------------------
从输出中可以看到,package的最后执行了maven-source-plugin的jar目标,并且生成了sources.jar

被折叠的 条评论
为什么被折叠?



