MyException - 我的异常网
当前位置:我的异常网» 开源软件 » [Maven学习笔记7]Maven插件和目标

[Maven学习笔记7]Maven插件和目标

www.MyException.Cn  网友分享于:2014-08-05  浏览:0次
[Maven学习笔记七]Maven插件和目标

插件(plugin)和目标(goal)

Maven,就其本质而言,是一个插件执行框架,Maven的每个目标的执行逻辑都是由插件来完成的,一个插件可以有1个或者几个目标,比如maven-compiler-plugin插件包含compile和testCompile,即maven-compiler-plugin提供了源代码编译和测试源代码编译的两个目标

 

使用插件和目标使得我们可以干预Maven构建框架的构建过程

 

Maven提供的插件列表

PluginType*VersionRelease DateDescriptionSource RepositoryIssue 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
pdf 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
 

文章评论

我是如何打败拖延症的
我是如何打败拖延症的
为什么程序员都是夜猫子
为什么程序员都是夜猫子
程序员都该阅读的书
程序员都该阅读的书
程序员的鄙视链
程序员的鄙视链
我的丈夫是个程序员
我的丈夫是个程序员
总结2014中国互联网十大段子
总结2014中国互联网十大段子
科技史上最臭名昭著的13大罪犯
科技史上最臭名昭著的13大罪犯
编程语言是女人
编程语言是女人
那些性感的让人尖叫的程序员
那些性感的让人尖叫的程序员
我跳槽是因为他们的显示器更大
我跳槽是因为他们的显示器更大
一个程序员的时间管理
一个程序员的时间管理
Web开发人员为什么越来越懒了?
Web开发人员为什么越来越懒了?
写给自己也写给你 自己到底该何去何从
写给自己也写给你 自己到底该何去何从
为啥Android手机总会越用越慢?
为啥Android手机总会越用越慢?
代码女神横空出世
代码女神横空出世
程序员应该关注的一些事儿
程序员应该关注的一些事儿
如何区分一个程序员是“老手“还是“新手“?
如何区分一个程序员是“老手“还是“新手“?
10个帮程序员减压放松的网站
10个帮程序员减压放松的网站
2013年中国软件开发者薪资调查报告
2013年中国软件开发者薪资调查报告
聊聊HTTPS和SSL/TLS协议
聊聊HTTPS和SSL/TLS协议
老程序员的下场
老程序员的下场
旅行,写作,编程
旅行,写作,编程
亲爱的项目经理,我恨你
亲爱的项目经理,我恨你
Web开发者需具备的8个好习惯
Web开发者需具备的8个好习惯
10个调试和排错的小建议
10个调试和排错的小建议
团队中“技术大拿”并非越多越好
团队中“技术大拿”并非越多越好
中美印日四国程序员比较
中美印日四国程序员比较
程序猿的崛起——Growth Hacker
程序猿的崛起——Growth Hacker
5款最佳正则表达式编辑调试器
5款最佳正则表达式编辑调试器
什么才是优秀的用户界面设计
什么才是优秀的用户界面设计
程序员眼里IE浏览器是什么样的
程序员眼里IE浏览器是什么样的
如何成为一名黑客
如何成为一名黑客
程序员最害怕的5件事 你中招了吗?
程序员最害怕的5件事 你中招了吗?
Java程序员必看电影
Java程序员必看电影
程序员的一天:一寸光阴一寸金
程序员的一天:一寸光阴一寸金
看13位CEO、创始人和高管如何提高工作效率
看13位CEO、创始人和高管如何提高工作效率
不懂技术不要对懂技术的人说这很容易实现
不懂技术不要对懂技术的人说这很容易实现
十大编程算法助程序员走上高手之路
十大编程算法助程序员走上高手之路
Google伦敦新总部 犹如星级庄园
Google伦敦新总部 犹如星级庄园
要嫁就嫁程序猿—钱多话少死的早
要嫁就嫁程序猿—钱多话少死的早
漫画:程序员的工作
漫画:程序员的工作
程序员必看的十大电影
程序员必看的十大电影
初级 vs 高级开发者 哪个性价比更高?
初级 vs 高级开发者 哪个性价比更高?
Java 与 .NET 的平台发展之争
Java 与 .NET 的平台发展之争
程序员和编码员之间的区别
程序员和编码员之间的区别
“懒”出效率是程序员的美德
“懒”出效率是程序员的美德
老美怎么看待阿里赴美上市
老美怎么看待阿里赴美上市
程序员周末都喜欢做什么?
程序员周末都喜欢做什么?
2013年美国开发者薪资调查报告
2013年美国开发者薪资调查报告
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有