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

所需积分/C币:40 2018-04-27 14:16:36 606KB PDF
154
收藏 收藏
举报

本文是研究Maven压缩打包技术中的第一部分,主要介绍了如何开发Maven插件,参与maven build的打包过程。 并附上了学习过程中应注意的细节,以及遇到的问题及解决方法。
projectxmins=http://maven.apacheorg/p01/4.0.u"xmins:xsi=http://wlww.ws.org/2e0l/xmlschema-instancc xsi:schemalocaion=http://maven.apacheorg/pom/4.0.ehttp://maven,apacheorg/xsd/maven4.0.0.xsd"> <modelversion>4.0.0</modelversion> cern Tal>t trm. weIl. weh</ert Tul> KartifactId compress-maven-plugin</artifac-Id 1-≤M^ PSHOT</ vension ka packaging >na lugin</packaging> Ss-maven-plugin Maven plugin</name> <urlhttp://maven.apacheorg</url> <properties> <project build. sourceEncodingUTF-8</project build. sourceEncoding> </propertics> <dependencies> <gren tl?ir"eHpHt FIe-mAverK</E ITel> Kartifac-Id>maven-plugin-apic/arrifactId> <version>2.0</version) </ dependency> <dependency> <groupId>org. apache maven. plugin-tools/groupId> Cartifac-Id>maven-plugin-annotations (/artifactId> <version>3.2</version> scope> provided《 </d <group Idorg codehaus plexus/groupId> irl ifac Td>(lexus-ul ils</HrL iTH I T> 具体细节详见附件: pom.xm 281KB 2创建Mojo类 创建项目时会自动创建 MyMOJO,继承 AbstractMojo类。重写里面的 execute方法。如果没有自行 创建即可。本文将插件名称改为 Compress Mojo(name =touch", defaulPhase LifecyclePhase PROCESS_ SOURCES) 这是插件名称,建自己重命 public class flege extends AbstractMcjo 后面尝用到 i Location of the file @Parameter(defaultvalue =sproject build directory) propert output required true private Filc outputDincc-ory i public void execute throws MojoExecutionException 十—tt 运行插件时,会将运行项目的tage路径传入 孟f(!f,∈ xists()) f. mkdirs() File touch new File(f,touch. txt )i 插件的具体业务罗辑,这里是在tage录下创建一个 FileWniter w -null touch.b义件 try W= new FileWriter (touch); wwrite( touch. txt") catch (IOException e)i throw new MojnFxet Ill itnIFxc epI iin( Frror t real ig [ilH ltuc I, e) 3 instal到 maven仓库 插件开发完成后,执行 maven clean insta11,将插件安装到本地仓库 4在其他项目中引入插件 在其他项目的pom,xm1文件中增加如下p1Lgin配置,注意图中的qoa1配置,此处的名称是代码中注 解⊙Moo的名称,要保持一致。然后 grouped, artifact和 verslon与插件的保持一致即可。 <plugins> <p⊥ugin> <groupId>com wenwo web</groupId> KartifactId>compress-maven-plugins/artifactId> <version >0.0.1-SNAPSHOT</version> <executions> execution?> <id>js-css-compress</id> <goal>compress</goal> </goals> <phase>prepare-package</ phase> </execution> </executions> </plugin> 目标项目中 paxIL坟文件如下 pom.xml 486KB 5运行 Maven插件 对目标项目执行 maven clean insta11,查看插件运行结果。 Tests run: 1, Failures: 3, Errors: 0, Skipped: Q [⊥N} compress-maven -plugin: 0. 0. 1-SNAHSHOl: compress (js-css-compress)@ wenwo-user-m INFo create touch tx- [] a kai> wenwo-user-m [user- web master srcymaIhrJavi b L0 src/test/java b画 JRE System Library JavaSE-1,刀 画 Maven Dependencies D au src L target b e generated-sources b e generated-test-sources D②m2e-wtp D色 maven- archiver D e maven-status wenwn-user wcnwe-Us-rwar build-113xn 一,L 可以看到,在执行 maven插件后, target目录下多了一个 touch.txt文件,至此 maven插件的开发 全部完成。下面将讲解插件开发过程中的一些细节和常见问题。 插件项目源码如下 compress-maven-p n rar 32.26KB 水*米水冰水米米凇水水米冰水*米凇水水客米冰水凇米冰 aven插件开发细节 水*米凇冰米术冰水凇水案z水凇凇水水米非冶水*米冰凇水宗 1 mOjo注解 Mojo是必须要的,这是定义插件对象的启动方法,由于该类只有一个方法,所以启动方法和启动类是 致的。在 Maven3之前是使用注释注解;Qgoa1xx这种方式。现在已经不使用这种方式了 x Goal compress public class AyMeje extends Abstrac=Mojo 2 Maven插件接收参数 我们平时在使用 Maven的各种插件的时候往往都能在配置文件中传入属性的值,比如 tomcat- Inden lugin插件我们可以随意指定 tomcat的端口号。这里插件的处理方式是在Car类中定义一些属性,比如 下面这样。然后我们重新将插件 insta1到本地仓库。再次运行。 mOjo(name ="compress", defaultPhase=LifecyclePhase PROCESS_RESOURCES) public class MyMojc extends AbstractMojo I 本 Location of the fi1e @Parameter(defaultValue =sproject build directory)" property =outputDir, required tri private File outputDirectory e PArameter(defaultValue=8080") private integer port public void execute( throws MojoExecution Excepticn i getLog(. info("port: +port) getlog)into( create touch. txt ) i File t= outputDirectory 五f(!f.cxit5()){ f mkdir File touch new File(, "touch. txt") 在插件的配置中增加 Configuration标签,加上子标签<poxt>,如下: <plugin> <group Id>com wenwo web</groupId> <artifactId>compress-maven-plugin/artifactId> s'vursiun1>0.0.1-SNAPSHOT</version> <port>805u</port> k/configuration> <executions> <execution> <id>i5-css-compress</id> goa15》 <goal>compress</goal> </goals> <phase>prepare-packages/phase> A/exEcution> / executions〉 </plugin> 运行结果如下: [INFO] 「工NFO1 cmpress-maven-plugin: 0.0. 1-SNAPSHOT: compress (is-css-compress)@ wenidQ-user-m [INFOJ PurL: 2090 [INFO] create touch.txt 工NFO] 3. Maven插件部署到 Maven私服 上面开发的 Maven插件仅部署到本地仓库,只能被本机的项目调用,为了让公司的团队成员也能调用, 需要将插件部署到公司的 Maven私服上,则需要在插件项目的pOm.xm1中加上如下配置 <distributionManagement> <IeOOELTOry> !-这里的D要和 settIng的id-致--> Cidmaven-repository-releases/id> curlhttp://ip:B031/nexus/content/reposiories'thirdparty/</url> <!-这是打成快照版本的配置,如果不用这个9 napshoEer031标签,打包失败,会报权限问题-> <snaoshocReposi-02y> <id>mawen-repository-snapshots</ia> cur1 >ht tp: //12: F031/nexus/conTent/rennsitories'thi rdinarrx</mri> </aistrioutionmlanacement> 然后运行 mvn clean insta11dep1oy。 注意 Maver的 setting.xm1里需要配置私服的用户名和密码,因为这是使用 Maven私服的基础,所以 这里就不展开叙述了 *者来***表 maven插件开发报错 小尜木本小本忐六本小水岑水冰小小本冰本水本本本水本本赤本水本木冰本小 1. Plugin execution not covered by lifecycle configuration 创建 Maven plugin项目时,pom文件可能会报出如下错误:P1 ugin execution not covered oy lifecycle configuration: orc. apachemaven plugins: maven-plugin- 91ugin:3.2: gencrate( execution:goal, phase)。对于这个错误我们可以在弹出的 Quick 上ix中选择 Permanently mark goal generate in pom.xm1 as ignored in Eclipse oui1d即可解决。 还有一种方法是选择Q1 ick Fix中的另一种方法,在<ui1d>下<p1 uginManagement>下 plugins>中加入: <pluginManagement> <p⊥ug1n〉 <groupId>org. eclipse m2e</groupId> KartifactId>lifecycle-mapping</artifactId> <version>1.0.0</version> <configuration> <lifccyclcMappingMctadata> <plugin Executions> plug⊥ rIExecuL⊥ur> <plugin xecutionFi lter> <groupId>org. aPache maven plugins</groupId> K<artifactIdmaven-plugin-plugin</artifactId> <versionRange>[3.2,D</ve-sionRange> <goals> <goal>helpmojo</goal </pluginExecution Filter> </action> </plugin </pluginExecutions> leN </configuration> /plugin> </pluginManagement> </build> 其中: group⊥d, artifact⊥d, versionrance, gcals是需要自己去改变的,因为不有可能其他的 插件也会报这个错误,按照这几个标签内容改就行了,我这里是 raven- plugin- plugin这个插件在报 错 2. Could not find goal 'wenwo-compress' in plugin 将插件引入目标项目运行时,可能会报Cou:1 d not tird goal' wenwO- Compress! ir plugin com wenwo web: compress-maven-plugin:0.0. 1-SNAPSHOT among available goals compress。这是因为pcm.xm1中goa1的配置与 MYMOUO中的Mojc注解的name值那么不一致导致的。将 它们统一即可

...展开详情
试读 7P Maven Build压缩打包(一)-maven插件开发
立即下载
限时抽奖 低至0.43元/次
身份认证后 购VIP低至7折
一个资源只可评论一次,评论内容不能少于5个字
您会向同学/朋友/同事推荐我们的CSDN下载吗?
谢谢参与!您的真实评价是我们改进的动力~
上传资源赚钱or赚积分
最新推荐
Maven Build压缩打包(一)-maven插件开发 40积分/C币 立即下载
1/7
Maven Build压缩打包(一)-maven插件开发第1页
Maven Build压缩打包(一)-maven插件开发第2页

试读结束, 可继续读1页

40积分/C币 立即下载