`

用eclipse编写自定义archetype

阅读更多

archetype:翻译成原型,其实就是我们所谓的脚手架。

maven已经给我们提供了很多archetype,但很多时候我们还需要自己手工去做属于自己的个性化archetype。

 

1、做一个maven工程(model-project)(包括了工具类,配置文件,等),我们的目标是通过自定义的archetype可以生成这个工程的样子。

2、右键工程model-project  run as 运行命令:archetype:create-from-project,该命令会生成/target/generated-sources/archetype代码。

3、新建一个普通java工程template,右键configure--->conver to maven 填写上maven坐标,删除src目录,备份pom.xml。

4、把第2步生成的/target/generated-sources/archetype下面的代码都copy到template工程中,覆盖原有代码,修改pom.xml中的坐标为备份中的坐标,同时必面把version中的SNAPSHOT去掉,保证不是快照才能在后面看到该archetype。

5、install template工程。

6、这里新建工程时,在default local 中就能选中刚才我们自己定义的archetype了。

 

注意:有时需要修改/src/main/resources/META-INF/maven/archetype-metadata.xml该文件

filtered:是否过滤,比如用用户输入的坐标,包名来替换类中的包名,坐标。

packaged:是否按包输出,比如src/main/java会级联生成三个目录。

文件一般结构为:

 

<?xml version="1.0" encoding="UTF-8"?>
<archetype-descriptor xsi:schemaLocation="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-descriptor/1.0.0 http://maven.apache.org/xsd/archetype-descriptor-1.0.0.xsd" name="hello-api"
    xmlns="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-descriptor/1.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <fileSets>
    <fileSet filtered="true" packaged="true" encoding="UTF-8">
      <directory>src/main/java</directory>
      <includes>
        <include>**/*.*</include>
      </includes>
    </fileSet>
    <fileSet filtered="true" packaged="flase" encoding="UTF-8">
      <directory>src/main/php</directory>
      <includes>
        <include>**/*.*</include>
      </includes>
    </fileSet>
 </fileSets>   
</archetype-descriptor>

 

很容易看明白,但有一种特殊情况是parent工程结构如下:

 

<modules>
		<module dir="api" name="service-api">
			<fileSets>
				<fileSet filtered="true" encoding="UTF-8" packaged="true">
					<directory>src/main/java</directory>
					<includes>
						<include>**/*.*</include>
					</includes>
				</fileSet>
				<fileSet filtered="true" encoding="UTF-8" packaged="true">
					<directory>src/test/java</directory>
					<includes>
						<include>**/*.*</include>
					</includes>
				</fileSet>
				<fileSet filtered="true" encoding="UTF-8" packaged="false">
					<directory>src/main/php</directory>
					<includes>
						<include>**/*.*</include>
					</includes>
				</fileSet>
				<fileSet filtered="true" encoding="UTF-8" packaged="false">
					<directory>src/main/csharp</directory>
					<includes>
						<include>**/*.*</include>
					</includes>
				</fileSet>
				<fileSet filtered="true" encoding="UTF-8" packaged="false">
					<directory>src/main/html</directory>
					<includes>
						<include>**/*.*</include>
					</includes>
				</fileSet>
				<fileSet filtered="true" encoding="UTF-8" packaged="false">
					<directory>src/main/resources</directory>
					<includes>
						<include>**/*.*</include>
					</includes>
				</fileSet>
				<fileSet filtered="true" encoding="UTF-8" packaged="false">
					<directory>src/test/resources</directory>
					<includes>
						<include>**/*.*</include>
					</includes>
				</fileSet>
			</fileSets>
		</module>
		<module dir="service" name="service-service">
			<fileSets>
				<fileSet filtered="true" encoding="UTF-8" packaged="false">
					<directory>META-INF/service-conf</directory>
					<includes>
						<include>**/*.*</include>
					</includes>
				</fileSet>
				<fileSet filtered="true" encoding="UTF-8" packaged="true">
					<directory>src/main/java</directory>
					<includes>
						<include>**/*.*</include>
					</includes>
				</fileSet>
				<fileSet filtered="true" encoding="UTF-8" packaged="true">
					<directory>src/test/java</directory>
					<includes>
						<include>**/*.*</include>
					</includes>
				</fileSet>
				<fileSet filtered="true" encoding="UTF-8" packaged="false">
					<directory>src/main/resources</directory>
					<includes>
						<include>**/*.*</include>
					</includes>
				</fileSet>
				<fileSet filtered="true" encoding="UTF-8" packaged="false">
					<directory>src/test/resources</directory>
					<includes>
						<include>**/*.*</include>
					</includes>
				</fileSet>
			</fileSets>
		</module>
	</modules>

 

分享到:
评论

相关推荐

    eclipse 创建maven项目 选择 archetypes所用到的jar包

    如果你发现现有的Archetypes不能满足需求,或者想要创建自己的项目模板,可以通过编写Archetype配置文件(archetype-descriptor.xml)和模板代码来实现。自定义的Archetypes可以发布到私有或公共的Maven仓库,供团队...

    archetype-catalog.zip

    使用Maven Archetype时,标签“maven”和“eclipse”表明这个话题与Maven在Eclipse中的集成有关,而“idea”则意味着在IntelliJ IDEA中也有类似的应用。在这些IDE中,正确配置Maven Archetype Catalog可以帮助开发者...

    Eclipse中文教程

    2. 编写代码:在src目录下新建Java类,使用内置的代码编辑器编写程序。 3. 编译与运行:Eclipse会自动编译代码,点击运行按钮或使用快捷键运行程序。 四、调试技巧 1. 设置断点:在代码行号处点击,标记为红色圆点...

    eclipse 下的maven插件

    Eclipse是一款广泛使用的Java集成开发环境(IDE),而Maven是一个强大的项目管理工具,主要用于构建、管理和聚合Java项目。在Eclipse中集成了Maven插件,使得开发者可以在IDE内部方便地利用Maven的功能,无需频繁...

    storage-plugin-archetype-2.2.1.zip

    Tabris是一款开源移动开发框架,允许开发者使用Java或TypeScript编写跨平台的原生移动应用,支持iOS和Android操作系统。 1. **Tabris简介**: Tabris.js是Eclipse基金会的一个开源项目,它允许开发者利用...

    用于Eclipse JavaEE IDE的Richfaces Maven项目

    在Eclipse中,我们可以通过导入Richfaces的Maven Archetype来快速创建一个基础的Richfaces项目。 在实际开发过程中,我们还需要掌握以下几点: 1. **JSF基础知识**:理解JSF的生命周期和渲染机制,以及如何创建...

    Maven实战PDF

    通过编写自定义插件,可以扩展Maven的功能,满足特殊需求。 **5.2 使用Archetype创建项目骨架** Archetype是一种模板机制,可以用来快速创建符合一定规范的项目骨架。通过Maven提供的archetype插件,可以方便地...

    book of vaadin

    - **使用 Vaadin Archetype 创建 Maven 项目**:利用 Vaadin 的 Maven Archetype 快速生成项目骨架。 ##### 2.5 使用 Maven 创建项目 - **Maven**:Maven 是一种项目管理和理解工具,可以帮助自动化构建过程,同时...

    maven部署过程

    4. **插件机制**:Maven提供了一系列内置插件来支持常见的构建任务,如编译源代码、生成文档等,同时也允许开发者根据实际需求编写自定义插件。 5. **项目信息管理**:Maven可以通过POM文件记录项目的各种信息,如...

    maven命令

    4. **插件定制**:根据项目需求,可以编写自定义插件或者配置现有插件,执行特定的任务。 5. ** profiles**:Maven 提供 profiles 功能,可以根据环境或条件选择性地启用或禁用某些配置。 **四、总结** Maven 的...

    maven的安装

    添加完依赖后,可以创建一个新的 Java 类,并编写简单的测试代码,通过 Eclipse 运行该类来验证 Maven 是否正确配置。 #### 五、总结 通过以上步骤,你已经成功地在本地环境中安装和配置了 Maven,并且能够在 ...

    maven3.0.4学习教程

    在命令行中,可以使用`mvn archetype:generate`命令来创建新项目。在Eclipse中,可以使用内置的Maven插件创建。 2.4. Maven 目录结构说明 Maven 项目遵循标准的目录结构,包括src/main/java(源代码),src/main/...

    Development environment configuration

    4. 创建新的编辑器样式:在文本编辑器设置中,你可以创建自定义的样式,并进行详细定制。 5. 编辑新样式:根据需求调整字体、颜色、间距等样式属性,提升代码的可读性。 6. 修改JSP文件编码:在JSP文件的编辑器设置...

    maven完整教程

    1. **初始化项目**: 使用`mvn archetype:create`命令创建一个新的Maven项目,选择合适的archetype模板。 2. **编辑POM.xml**: 根据项目需求修改POM文件,添加依赖、插件、构建配置等。 3. **构建项目**: 常用的...

    maven2完全使用手册

    - 使用命令`mvn archetype:create`创建项目,指定`groupId`和`artifactId`,例如: ``` mvn archetype:create -DgroupId=com.mycompany.app -DartifactId=my-app ``` **构建流程**: - `mvn compile`:编译源...

    AXIS2 WebService

    - **Axis2 Plugin for Eclipse**:Eclipse的插件,提供了集成的AXIS2开发环境,包括代码生成、部署等功能。 - **Axis2 Archetype**:Maven的archetype插件,帮助快速创建AXIS2 Web服务项目结构。 5. **Test_ws子...

Global site tag (gtag.js) - Google Analytics