Maven Build压缩打包(一)-maven插件开发

前言
性能一直是项目中比较重要的一点,尤其门户网站,对页面的响应要求是很高的,从性能角度上来讲,对于Web端的优化其中重要的一点无疑是JS、CSS文件压缩,图片的融合,尽量减小文件的大小,必免占加载时占用过多的带宽。所以能在项目编译打包时进行压缩是再好不过了,所以本文将研究如何通过开发Maven Plugin来实现压缩打包。
本文将分为三部分讲解:
  • Maven插件开发
  • YUICompressor压缩JS、CSS
  • Maven压缩插件开发
注:如果您观看的是pdf等其他文档,导致无法下载附件,请前往本人的有道笔记下载,地址如下:
Maven 插件
Maven 作为一个优秀的项目管理工具,其插件机制为其功能扩展提供了非常大的便捷性。虽然说大多数情况下,我们可能不太会自己去编写 Maven 插件,但不排除在某些特殊的情况下,我们需要去完成一个自己的插件,来协助我们处理某些比较通用的事情。比如压缩代码。

1、创建插件项目
    
Artifact Id 以xxx-maven-plugin命名,如:compress-maven-plugin,下面Version的内容无所谓。

创建完毕之后的结构是这样:
插件项目中pom.xml关键部分配置如下:
maven-plugin-api是插件开发API,maven-plugin-annotations是使用Maven的注解时需要的包,然后注意打包方式为:<packaging>maven-plugin</packaging>
注意:初次创建maven插件项目时可能报execution not covered by lifecycle这种错误,具体解决方法详见文末。
具体细节详见附件:

2.创建Mojo类
创建项目时会自动创建MyMojo,继承AbstractMojo类。重写里面的execute方法。如果没有自行创建即可。本文将插件名称改为compress。

3.install到maven仓库
插件开发完成后,执行maven clean install,将插件安装到本地仓库

4.在其他项目中引入插件
在其他项目的pom.xml文件中增加如下plugin配置,注意图中的goal配置,此处的名称是代码中注解@Mojo的名称,要保持一致。然后groupId,artifactId和version与插件的保持一致即可。
目标项目中pom.xml文件如下:
5.运行Maven插件
对目标项目执行maven clean install,查看插件运行结果。


可以看到,在执行maven插件后,target目录下多了一个touch.txt文件,至此maven插件的开发全部完成。下面将讲解插件开发过程中的一些细节和常见问题。
插件项目源码如下:

==================================================================
****************************** maven插件开发细节 ************************************
==================================================================
1.@Mojo注解
@Mojo是必须要的,这是定义插件对象的启动方法,由于该类只有一个方法,所以启动方法和启动类是一致的。在Maven 3之前是使用注释注解:@goal xxx这种方式。现在已经不使用这种方式了。

2.Maven插件接收参数
我们平时在使用Maven的各种插件的时候往往都能在配置文件中传入属性的值,比如tomcat-maven-plugin插件我们可以随意指定tomcat的端口号。这里插件的处理方式是在Car类中定义一些属性,比如下面这样。然后我们重新将插件install到本地仓库。再次运行。
在插件的配置中增加Configuration标签,加上子标签<port>,如下:
运行结果如下:

3.Maven插件部署到Maven私服
上面开发的Maven插件仅部署到本地仓库,只能被本机的项目调用,为了让公司的团队成员也能调用,需要将插件部署到公司的Maven私服上,则需要在插件项目的pom.xml中加上如下配置:
然后运行mvn clean install deploy。
注意Maven的setting.xml里需要配置私服的用户名和密码,因为这是使用Maven私服的基础,所以这里就不展开叙述了。


==================================================================
****************************** maven插件开发报错 ************************************
==================================================================
1.Plugin execution not covered by lifecycle configuration
创建Maven plugin项目时,pom文件可能会报出如下错误:Plugin execution not covered by lifecycle configuration: org.apache.maven.plugins:maven-plugin-plugin:3.2:generate (execution: goal, phase )。对于这个错误我们可以在弹出的Quick Fix中选择Permanently mark goal generate in pom.xml as ignored in Eclipse build即可解决。
还有一种方法是选择Quick Fix中的另一种方法,在<build>下<pluginManagement>下<plugins>中加入:
其中:groupId,artifactId,versionRange,goals是需要自己去改变的,因为不有可能其他的插件也会报这个错误,按照这几个标签内容改就行了,我这里是maven-plugin-plugin这个插件在报错。

2.Could not find goal 'wenwo-compress' in plugin
将插件引入目标项目运行时,可能会报Could not find goal 'wenwo-compress' in plugin com.wenwo.web:compress-maven-plugin:0.0.1-SNAPSHOT among available goals compress。这是因为pom.xml中goal的配置与MyMoJo中的@Mojo注解的name值那么不一致导致的。将它们统一即可。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Maven是一个功能强大的项目管理工具,可以帮助我们自动化构建、编译和打包项目。Maven提供了一种称为插件(plugins)的机制,可以扩展其功能。下面是一些常用的Maven编译打包插件: 1. Maven Compiler Plugin:该插件用于编译Java源代码。它默认使用Java编译器进行编译,但也支持其他编译器,如Groovy等。可以通过配置插件的参数来指定编译的源码路径、目标版本等。 2. Maven Surefire Plugin:该插件用于运行项目中的单元测试。它会自动搜索项目中的测试类,并执行这些测试类中的测试方法。可以通过配置插件的参数来指定测试类的匹配规则、报告输出等。 3. Maven Javadoc Plugin:该插件用于生成项目的API文档。它会根据项目中的源代码和Javadoc注释生成HTML格式的文档,并可以通过配置插件参数来指定输出路径、是否包含私有成员等。 4. Maven Source Plugin:该插件用于生成项目的源代码包。它会将项目中的源代码打包成一个压缩文件,供其他开发人员使用。可以通过配置插件参数来指定输出路径、是否包含测试代码等。 5. Maven Jar Plugin:该插件用于将项目打包成一个可执行的JAR文件。它会将项目中的编译后的类文件、资源文件等打包到JAR文件中,并可以通过配置插件参数来指定JAR文件的名称、包含的内容等。 这些插件可以通过在项目的pom.xml文件中配置来启用和使用。例如,可以在`<build>`标签下的`<plugins>`标签中添加相应的插件配置。具体的插件配置和参数可以参考Maven官方文档或插件的官方文档。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值