`
bingooh
  • 浏览: 52907 次
  • 性别: Icon_minigender_1
  • 来自: 佛山
社区版块
存档分类
最新评论

使用archetype自定义项目原型

阅读更多

 

Maven Archetype Plugin可以根据一个已存在的项目,创建一个原型项目。然后可以使用此原型项目,创建最终的用于实际开发的项目。

 

Archetype翻译为原型,也可以理解为模板。简单的说,Maven Archetype Plugin可以帮助我们把一个已存在的项目制作为项目模板,然后根据此项目模板,创建一个新的项目。此插件的官方文档请参考Maven Archetype Plugin

 

以下介绍如何在Eclipse里使用Maven Archetype Plugin,开发环境搭建请参考<<搭建基于Eclipse+Maven的开发环境>>

 

1.使用maven-archetype-quickstart项目原型创建一个Maven项目hello-maven,具体可参考帖子开发环境搭建

 

2.右键点击hello-maven项目-->Run As-->Maven build...,创建一个Eclipse运行配置。在弹出的窗口输入如下命令,最后点击Run按钮:

 

 

3.运行完成后,会在hello-maven项目的target/generated-sources/archetype目录下,生成原型项目文件(如果没有看见,可右键点击项目-->Refresh)



 

 

4.接着把原型项目文件导入一个Maven项目,方便修改。点击菜单项File-->New-->Project..,在弹出窗选择General-->Project,新建一个普通项目hello-maven-archetype

 

5.右键点击新建的hello-maven-archetype项目-->Configure-->Convert to Maven Project,把此项目转换为Maven项目,在弹出窗口输入以下信息,点击Finish按钮:



 

 

6.转换为Maven项目后,会生成pom.xml文件,备份此文件(可简单右键复制-->粘贴),后面会用到此文件里的信息

 

 

6.把以上步骤生成的hello-maven项目下的target/generated-sources/archetype下的所有文件复制-->粘贴到hello-maven-archetype项目下(如果提示文件已存在,则选择直接覆盖)。复制后的项目目录如下:

 

 

7.打开Copy of pom.xml,把此文件里的内容覆盖到相应的pom.xml文件里,然后删除Copy of pom.xml。以下为覆盖后的pom.xml的部分内容:
注意:version需修改为0.0.1,如果版本号带有SNAPSHOT等字样,后期在新建Maven项目时,会选择不到hello-maven-archetype原型

 
 

8.此时,如果发现hello-maven-archetype有错误,可打开Problem视图,右键点击错误项-->Quick Fix,点击弹出窗口的Finish按钮,更新Maven配置即可

 

9.右键点击hello-maven-archetype项目-->Run As-->Maven install,把此项目原型安装到Maven仓库,以便后面使用

 

10.下面介绍如何使用hello-maven-archetype。点击菜单项File-->New-->Project..-->Maven-->Maven Project, 新建一个Maven项目。点击Next按钮,在以下界面,点击Add Archetype..按钮,添加我们自定义的hello-maven-archetype

 

 

11.在弹出窗口输入以下信息(需要与hello-maven-archetype的pom.xml里的信息对应),点击确定按钮(此处添加的信息将会保存在{USER_HOME}\.m2\archetype-catalog.xml,可以直接编辑此文件添加自定义的archetype项目):

 

12.选择Default Local-->hello-maven-archetype,创建hello-maven-one项目,后面步骤省略

注1:如果选择不到,请先确认版本号没有SNAPSHOT字样,然后试试使用-clean参数重启Eclipse

注2:如果直接就可以选到,可跳过前面Add Archetype步骤



 

以上,hello-maven是已存在的示例项目,hello-maven-archetype是原型项目,hello-maven-one是根据原型项目创建的最终项目,可用于实际开发

 

我们可以修改原型项目里的archetype-metadata.xml,以决定如何创建最终项目。比如可设置原型项目里哪些文件目录需要放入最终项目。具体设置请参考官方文档ArcheTypeDescriptor

 

可设置原型项目里的文件是否经过渲染后,再放入最终项目里。archetype插件使用Velocity作为渲染引擎。并且预先定义了gruopId, artifactId, version, package 四个变量。打开原型项目文件pom.xml:

 

 

可以看到此文件使用了${gruopId},${artifactId},${version}引用了预定义的变量值:

 

打开原型项目文件App.java,可见此文件使用了${package}引用了预定义变量值:

 

在创建Maven项目的最后一步,可以设置这些变量值,而自定义变量值将显示在下面:

 

以下代码在archetype-metadata.xml里自定义了一个appClassName变量,其默认值为Hello:

 

可以在项目原型文件里使用${appClassName}引用此变量值,可以使用__appClassName__在项目原型文件名称里引用此变量值,如:
 注:archetype插件暂不支持在项目原型文件名称里引用变量值,但是使用以上格式却可以引用

 

自定义变量需要在archetype.properties里配置默认值,否则在运行mvn install命令时会提示测试不通过:

 

 如果原型项目所在的Maven仓库需要身份验证,那么在settings.xml里配置的server名称必须是[archetypeArtifactId]-repo,以本文为例,配置如下:

注:如果你的所有自定义原型项目都在同一个远程Maven仓库里,那么server的名称可以设置为archetype

<server>  
	<id>hello-maven-archetype-repo</id>  
	<username>your_username</username>  
	<password>your_password</password>  
 </server>  

 


 

 

  • 大小: 59.8 KB
  • 大小: 10.2 KB
  • 大小: 34.5 KB
  • 大小: 6.4 KB
  • 大小: 7 KB
  • 大小: 23.5 KB
  • 大小: 20.2 KB
  • 大小: 12.9 KB
  • 大小: 7.4 KB
  • 大小: 35.4 KB
  • 大小: 7 KB
  • 大小: 4.2 KB
  • 大小: 5.4 KB
  • 大小: 17.3 KB
  • 大小: 6.4 KB
  • 大小: 1.8 KB
  • 大小: 4.2 KB
分享到:
评论

相关推荐

    maven-archetypes:自定义Maven原型

    用SVN/Git客户端检出项目 SVN: svn://gitee.com/longshu/maven-archetypes Git: https://gitee.com/longshu/maven-archetypes.git Git: https://github.com/xlongshu/maven-archetypes.git quickstart mvnw clean ...

    nifi-processor-bundle-archetype:帮助定制处理器开发的原型

    该项目包含一个 Maven 原型,用于创建新项目以开发 Apache NiFi 项目的自定义处理器。 用法 这些说明假设您拥有 JDK7、Maven &gt;= 3.0.5,并且已经构建了 。 将此存储库克隆到您的计算机 cd nifi-processor-bundle-...

    payengineer-webui-customer-archetype:Payengineer自定义Web UI原型工件开发

    payengineer-webui-customer-原型Payengineer自定义Web ui原型工件开发。

    maven window下安装包

    第13章:使用Maven生成项目原型/13.2 编写自己的项目原型/13.2.4 archetype.xml描述符文件 第13章:使用Maven生成项目原型/13.2 编写自己的项目原型/13.2.5 将原型项目上传到私有仓库 第13章:使用Maven生成项目原型...

    archetype-maven-goal:原型自定义目标

    现在,您可以在本地的任何项目中使用as: mvn org.example:generate:archetypeproject ###可以使用的标志: mvn org.example:generate:archetypeproject -DappTitle=title -DappId=appId -DgroupId=appId -...

    maven-archetypes-catalog-plugin:一个使IntelliJ IDEA能够获取外部Maven原型目录文件的插件

    要使用自定义Maven原型,您必须手动添加外部Maven原型。 此IntelliJ IDEA插件可让您定义外部Maven原型目录文件的列表。 创建新的Maven项目时,将获取这些文件,并在IntelliJ IDEA中提供包含的Maven原型。用法安装...

    custom-maven-archetypes:Java EE和Jakarta EE项目引导的Maven原型

    轻松启动新的Java EE和Jakarta EE项目 自定义Maven原型的存储库: 具有Microprofile 3.3和Java 11的Jakarta EE 8 使用这种Maven原型,您可以在几秒钟内引导一个简单的Jakarta EE 8应用程序。 该原型包含以下文件/...

    aem-project-archetype:用于在AEM上创建最佳实践网站的Maven模板

    AEM项目原型 Maven模板创建一个最小的,基于最佳实践的Adobe Experience Manager(AEM)项目作为您网站的起点。 文献资料 :原型架构及其不同模块的概述。 以下教程基于该原型: :了解如何启动一个全新的网站。 ...

    orbisgis-plugin_maven-archetype:一个Maven原型,可帮助为OrbisGIS创建插件

    第二部分将从GDMS原型创建,例如编写一个或多个自定义SQL函数。OrbisGIS OSGi SQL Bundle Artchetype osgi-sql包含用于编写您自己SQL函数并将其作为新服务公开的原型。 OrbisGIS将注意到该用户定义SQL函数,并将其...

    custom-cache-store-archetype

    自定义缓存存储原型安装原型运行命令mvn archetype:update-local-catalog install使用原型运行命令mvn archetype:generate -DarchetypeGroupId=org.infinispan -DarchetypeArtifactId=custom-cache-store-archetype

    xxyy-archetypes:一组半有用的原型定义,可用于快速创建一些常见的 Spigot 插件类型

    请记住在所有文件中自定义项目名称和文本。 编译 git clone https://github.com/xxyy/xxyy-archetypes.git mvn install 这会将所有原型安装到您的本地存储库中。 用法 要安装原型,请在您最喜欢的 shell fork 中...

    nifi-extensions:NiFi框架的通用扩展

    创建扩展项目的最简单方法是使用NiFi的nar原型。 创建nar项目的实例 mvn -DarchetypeGroupId=org.apache.nifi -DarchetypeArtifactId=nifi-processor-bundle-archetype -DarchetypeVersion=0.0.2-incubating-...

    Maven权威指南 很精典的学习教程,比ANT更好用

    原型父项目 10. 构建生命周期 10.1. 简介 10.1.1. 清理生命周期 (clean) 10.1.2. 默认生命周期 (default) 10.1.3. 站点生命周期 (site) 10.2. 打包相关生命周期 10.2.1. JAR 10.2.2. POM 10.2.3. ...

    Shadow Archetype Fortnite Wallpapers Tab-crx插件

    阴影原型Fortnite壁纸选项卡-由Supertabthemes创建此扩展程序是为所有Fortnite粉丝创建的。 通过下载,您将获得与Shadow Archetype Fortnite相关的惊人壁纸,以及一些其他功能。 我们的扩展程序可以让您:-用质量...

    cq5_archetypes:Adobe CQ5 Maven 原型

    在要生成新项目的目录下执行以下命令: mvn archetype:generate -DarchetypeGroupId=com.yurishchev.aem -DarchetypeVersion=1.0.0 -DarchetypeArtifactId=basic-archetype 填写所需的属性。 所有原型都有3个基本...

    devday-optimizing

    archetype-application-example-widgetset:小部件集,自定义客户端代码和小部件附加组件的依赖性 archetype-application-example-ui:主要应用程序模块,开发时间 archetype-application-example-production:产生...

    tweetfluxapp:推文流分析

    欢迎来到您的 beanstalk-maven-plugin 原型项目!关于有关最新信息,请参阅 这个项目是从 elasticbeanstalk-service-webapp-archetype 生成的。 实际上,它是使用 Amazon Web Services 的 Elastic Beanstalk 服务的...

Global site tag (gtag.js) - Google Analytics