重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
本文中将介绍maven的自定义插件(入门实战)自定义archeType模板(实战)按环境打包(实战)三个在游戏中常常需用的操作。
成都创新互联公司坚持“要么做到,要么别承诺”的工作理念,服务领域包括:网站制作、成都做网站、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的唐山网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!我们在创建maven项目的时候,你会发现有这么多的apache提供的模板。
或者使用mvn archetype:generate命令来快速创建maven项目,也会有很多个选项,让你选择模板序号。那每个模板之间有什么区别呢?
每个模板里其实就是附带不同的依赖和插件。一般在公司游戏里都会有属于本公司的一套archeType模板,里面有着调试好的项目用到的依赖包和版本号。
假如自己已经有了一个maven项目,想给该项目创建一个archeType模板。
cd 到项目根目录下执行(pom.xml同级目录)。
此时会在项目target下生成这些文件:
先 cdtarget/generated-sources/archetype/
然后执行 mvn install
执行成功后,执行crawl命令,在本地仓库的根目录生成archetype-catalog.xml骨架配置文件:
mvnarchetype:crawl
来看一看它里面的内容:
执行mvn archetype:generate -DarchetypeCatalog=local从本地archeType模板中创建项目。
然后会让你选择模板序号和groupId artifactId version和package信息:
项目创建成功!
当然,也可以使用IDEA来帮我们用图形界面使用archeType模板创建项目:
后面的就与创建普通项目相同了,不做演示。
在这里我只是做了简单的示例,更复杂的功能开发请参考mojo的API:
https://maven.apache.org/developers/mojo-api-specification.html
插件提供者项目结构:
2.1.1、修改packaging
2.1.2、修改pom
这两个依赖是自定义插件必须的依赖,代表了它是一个Mojo工程,里面包含了一些Mojo的接口和抽象类以及注解。
2.1.3、coding业务逻辑
注意这里面的@Parameter @Mojo LifecyclePhase.PACKAGE都是org.apache.maven.plugins.annotations包下的:
@Parameter注解会获取消费者配置文件中的变量值并赋值。
defaultPhase =LifecyclePhase.PACKAGE声明了该插件触发的生命周期。
@Mojo定义插件的goal名字。
2.1.4、clean and install
执行mvn clean install,在target目录下会生成这样一个jar包,这就是插件包。
插件消费者 : 项目结构
2.2.1、修改pom
如果不加,我们只能通过执行插件或者执行命令的方式来执行,如果想让它在执行package的时候自动执行,就需要设置该属性,可以把它理解成hook。
2.2.2、如何传递参数给plugin
在插件提供者中,有个MyMojo的类,有这样一段代码:
它和你用过的spring注解一样,也是用来以注解的形式获取参数的值。
相对应的,在插件消费者的配置中我们就应该相应的给出参数的定义:
上面的配置与变量名一一对应即可。这时候你会发现maven插件中自动会添加一个plugins选项:
执行该插件:mvnmyprovide:fantj 或者直接点击:
在日常开发中,我们项目的开发环境和生产环境以及测试环境往往是不同的,比如:数据库的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,详情请看:
https://cwiki.apache.org/MAVEN/maven-3x-compatibility-notes.html#Maven3.xCompatibilityNotes-profiles.xml
虽然有这么多define的方式,但是我们一般使用的是第一种defined in the pom,因为不见得每个项目的生产环境都一模一样,当然这个也是因个人情况而异。
可以看到只将pro/application.properties进行了编译。
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。