Maven的这三个用法你必定要会!

本文中将介绍maven的自定义插件(入门实战)自定义archeType模板(实战)按环境打包(实战)三个在私服中经常需用的操做。html

一、自定义archeType模板

1.一、什么是archeType

咱们在建立maven项目的时候,你会发现有这么多的apache提供的模板。spring

或者使用mvn archetype:generate命令来快速建立maven项目,也会有不少个选项,让你选择模板序号。那每一个模板之间有什么区别呢?数据库

每一个模板里其实就是附带不一样的依赖和插件。通常在公司私服里都会有属于本公司的一套archeType模板,里面有着调试好的项目用到的依赖包和版本号。apache

1.二、建立archetype

假如本身已经有了一个maven项目,想给该项目建立一个archeType模板。api

cd 到项目根目录下执行(pom.xml同级目录)。app

此时会在项目target下生成这些文件:maven

1.三、生成archetype模板

先 cdtarget/generated-sources/archetype/ide

而后执行 mvn install测试

执行成功后,执行crawl命令,在本地仓库的根目录生成archetype-catalog.xml骨架配置文件:ui

mvnarchetype:crawl

来看一看它里面的内容:

1.四、使用archetype模板

执行mvn archetype:generate -DarchetypeCatalog=local从本地archeType模板中建立项目。

而后会让你选择模板序号和groupId artifactId version和package信息:

项目建立成功!

固然,也可使用IDEA来帮咱们用图形界面使用archeType模板建立项目:

后面的就与建立普通项目相同了,不作演示。

二、自定义插件

在这里我只是作了简单的示例,更复杂的功能开发请参考mojo的API:

maven.apache.org/developers/…

2.一、插件提供者

插件提供者项目结构:

2.1.一、修改packaging

2.1.二、修改pom

这两个依赖是自定义插件必须的依赖,表明了它是一个Mojo工程,里面包含了一些Mojo的接口和抽象类以及注解。

2.1.三、coding业务逻辑

注意这里面的@Parameter @Mojo LifecyclePhase.PACKAGE都是org.apache.maven.plugins.annotations包下的:

@Parameter注解会获取消费者配置文件中的变量值并赋值。

defaultPhase =LifecyclePhase.PACKAGE声明了该插件触发的生命周期。

@Mojo定义插件的goal名字。

2.1.四、clean and install

执行mvn clean install,在target目录下会生成这样一个jar包,这就是插件包。

2.二、插件消费者

插件消费者 : 项目结构

2.2.一、修改pom

若是不加,咱们只能经过执行插件或者执行命令的方式来执行,若是想让它在执行package的时候自动执行,就须要设置该属性,能够把它理解成hook。

2.2.二、如何传递参数给plugin

在插件提供者中,有个MyMojo的类,有这样一段代码:

它和你用过的spring注解同样,也是用来以注解的形式获取参数的值。

相对应的,在插件消费者的配置中咱们就应该相应的给出参数的定义:

上面的配置与变量名一一对应便可。这时候你会发现maven插件中自动会添加一个plugins选项:

执行该插件:mvnmyprovide:fantj 或者直接点击:

三、Profile按环境打包

在平常开发中,咱们项目的开发环境和生产环境以及测试环境每每是不一样的,好比:数据库的url等。在项目上生产环境时,就须要修改这些参数,给开发形成不便。为了解决该问题,Maven 2.0引入了构建配置文件的概念(build profiles)。

它能干什么呢?

假如你的生产环境和开发环境所需环境配置不一样,生产环境配置文件是pro.properties,开发环境配置文件是dev.properties,那么用maven profile ,你能够实现打包开发环境jar包的时候只将dev.properties打包并使用,生产环境打包同理。

在哪里声明呢?

它能够在每一个项目的pom.xml文件中声明,也能够在maven的用户setting.xml下声明,也能够在maven全局环境下设置setting.xml,详情以下。

1.Per Project Defined in the POM itself (pom.xml).

2.Per User Defined in the Maven-settings(%USER_HOME%/.m2/settings.xml)

3.Global Defined in the globalMaven-settings (${maven.home}/conf/settings.xml)

4.Profile descriptor 不支持3.0,详情请看:

cwiki.apache.org/MAVEN/maven…

虽然有这么多define的方式,可是咱们通常使用的是第一种defined in the pom,由于不见得每一个项目的生产环境都如出一辙,固然这个也是因我的状况而异。

实战

3.一、项目结构

3.二、pom.xml

3.三、三个application.properties

3.四、打包

能够看到只将pro/application.properties进行了编译。

相关文章
相关标签/搜索